Внутри моего приложения пользователь может получить доступ к WebView
, который захватывает URL
следующим образом:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
self.url = webView.url
}
Пользователь также может получить доступ к приложению через ShareExtension
, где я беру URL
следующим образом:
if let item = extensionContext?.inputItems.first as? NSExtensionItem,
let itemProvider = item.attachments?.first,
itemProvider.hasItemConformingToTypeIdentifier("public.url") {
itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil) { (url, error) in
if (url as? URL) != nil {
// do something with URL
У меня это работает нормально и всегда получает правильный URL
.
Проблема:
Я обнаружил, что у некоторых людей в моем приложении URL
сохраняется С PageTitle
. Это проблема, потому что при попытке открыть их (я сохраняю их в textView
с функцией hyperLink
) происходит ошибка, поскольку String
не может быть отформатирован в URL
. Вот несколько примеров недопустимого URLs
:
Зови меня своим именем https://www.amazon.de/dp/B07B58SGWP/ref=cm_sw_r_cp_api_fabc_iCJ6Fb0QVVW8Y?_encoding=UTF8&psc=1
https://farfetch.onelink.me/yQyB/b9f5e5d2?af_dp=https%3A%2F%2Fwww.farfetch.com%2Fshopping%2Fitem-16119737.aspx&af_web_dp=https%3A%2F%2Fwww.farfetch.com%2Fitem-16119737.aspx Shoppen Кроссовки Golden Goose 'Hi Star'
Schau dir LANDSKRONA IKEA an. Более подробная информация: https://ingka.page.link/gqV9dAw61TqNJrne9
https://www.apple.com/de/shop/buy-ipad/ipad-air/64gb-gr%C3%BCn-wifi
Любая идея, почему первые 3 примера сохраняются именно так, и есть ли решение этой проблемы???
Последние 2 примера меня действительно смущают. Я не могу их открыть, так как Swift сообщает мне, что они недействительны URLs
. Но почему? Здесь нет пробелов, как в других примерах. А также никаких китайских букв или арабского текста, которые сделали бы их недействительными.
Я действительно застрял здесь так рад за каждую помощь!
ü
,ö
илиß
символами (быстрый тест в Playground:["a", "ü", "ö", "ß"].forEach { let full = "http://www.google.com" + $0; print("full: \(full) \(URL(string: full) != nil)") }
) - person Larme   schedule 14.01.2021