Как использовать WKWebView SolutionHandler для отображения оповещения, когда сайт заблокирован? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь отобразить сообщение об ошибке, когда пользователь покидает разрешенные веб-сайты. Однако, несмотря на то, что я захожу на разрешенные веб-сайты, UIAlertController показывает «Отказано в доступе». Я предполагаю, что разрешенный веб-сайт загружает некоторые внешние URL, и у меня есть ошибка в моем методе "SolutionHandler". Вот код:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

    if let host = navigationAction.request.url?.absoluteString {
        if host.contains(selectedWebsite) {
            decisionHandler(.allow)
            print("? \(host)")
            return
        }
    }
    let vc = UIAlertController(title: "Access Denied.", message: "Not allowed. Please go Back.", preferredStyle: .alert)
    vc.addAction(UIAlertAction(title: "Go Back", style: .default, handler: nil))
    present(vc, animated: true)
    decisionHandler(.cancel)
    print("? \(selectedWebsite)")
}

«selectedWebsite» - это массив строк с разрешенными URL-адресами, которые хранятся в viewController и передаются в WKWebView. Ничего особенного.

Отладчик показывает это, когда я пытаюсь достичь https://stackoverflow.com/, например:

? https://www.stackoverflow.com/ ? https://www.stackoverflow.com

То же самое относится и к apple.com., Google.com отлично работает.

Надеюсь, вы, ребята, поможете мне с этим.

Спасибо!

...