Swift - WKWebKit - не может открывать ссылки во внешнем браузере (Safari) - PullRequest
0 голосов
/ 06 ноября 2018

Я загружаю контент из документа на диске Google (опубликован) в WKWebView, но не могу открыть некоторые ссылки. Я пытаюсь открыть их в Safari, но если мне удастся открыть их в веб-представлении, это тоже нормально.

Я использую WKUIDelegate с этим методом:

    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        let url = navigationAction.request.url!
        print(navigationAction.request.url!)
        if navigationAction.targetFrame == nil, UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.open(navigationAction.request.url!, options: [:], completionHandler: nil)

        }
        return nil
    }

Проблема здесь в том, что navigationAction.request.url! для некоторых ссылок "" (пусто), поэтому я не могу их открыть (canOpenURL возвращает false)

Например, ссылки, которые я не могу открыть, выглядят так:

<a class="c6" href="https://www.google.com/url?q=https://www.youtube.com/watch?v%3DYK.....">Tutorial</a>

И ссылки, которые я могу открыть:

<a target="_blank" title="Learn more about Google Drive" href="//docs.google.com/">Google Drive</a>

В последнем случае navigationAction.request.url действителен, как написано в теге.

Есть ли способ решить эту проблему?

EDIT: Я пробовал долго нажимать на ссылку и копировать ссылку, и кажется, что URL скопирован правильно, поэтому в загруженном html проблем нет.

После еще нескольких тестов я обнаружил, что некоторые проблемы связаны с реальными ссылками, например, если я пытаюсь открыть https://google.com/url.... https://docs.google.com... или youtube.com или некоторые другие сайты, это работает, но если Я пытаюсь открыть https://www.google.com/... не работает

...