Ограничить указание c страниц для загрузки в WKWebview? - PullRequest
0 голосов
/ 11 марта 2020

Как я могу предотвратить загрузку любой веб-страницы в WEKWebView? Для того, чтобы загрузить весь сайт, я использую этот код

self.webview.customUserAgent = userAgent 
self.webview.navigationDelegate = self
self.webview.load(URLRequest.init(url: URL.init(string: snapshot.value as! String)!))

, но знаю, что хочу ограничить некоторую конкретную c страницу для загрузки в этом веб-просмотре с помощью методов NavigationDelegate?

1 Ответ

1 голос
/ 11 марта 2020

Хороший способ сделать это - сравнить URL Host, что можно сделать, используя следующий подход

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

        let exceptedHosts: [String] = [
            "facebook.com", 
            "m.facebook.com"
        ]

        if let host = navigationAction.request.url?.host {
            if exceptedHosts.contains(host) {
                decisionHandler(.cancel)
                return
            }
        }

        decisionHandler(.allow)
    }

Это предотвратит открытие любого URL с facebook.com или m.facebook.com, добавьте любой хосты к массиву, чтобы исключить их от открытия.

Пожалуйста, не забудьте установить делегата в viewDidLoad

    webview.navigationDelegate = self
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...