WKWebView не загружает некоторые URL - PullRequest
0 голосов
/ 02 октября 2019

info.plist

Я установил для всех Арбитражных загрузок значение True.

enter image description here

Большая часть загрузки URLхорошо, некоторые нет.

let webView = WKWebView(frame: CGRect(x: 0,
                                          y: 0,
                                          width: view.frame.size.width,
                                          height: view.frame.size.height))
    webView.navigationDelegate = self
    webView.isHidden = true
    activityView.center = view.center
    activityView.style = UIActivityIndicatorView.Style.gray
    activityView.startAnimating()
    view.addSubview(activityView)
    view.addSubview(webView)
    let url = URL(string: urlString ?? "")
    webView.load(URLRequest(url: url!))


// MARK: - Public Instance Method
extension DealsWebView {
func webView(_ webView: WKWebView,
             didFinish navigation: WKNavigation!) {
    webView.isHidden = false
    activityView.stopAnimating()
}

func webView(_ webView: WKWebView,
             didReceive challenge: URLAuthenticationChallenge,
             completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {
        let cred = URLCredential(trust: challenge.protectionSpace.serverTrust!)
        completionHandler(.useCredential, cred)
        print("[WEBVIEW] .useCredential: ")
    } else {
        completionHandler(.performDefaultHandling, nil)
        print("[WEBVIEW] .performDefaultHandling: ")
    }
 }
}

Например, https://apple.com загружается нормально. Но если я попытаюсь загрузить: http://indigo.ca WebView даже не вызовет didFinish

1 Ответ

0 голосов
/ 02 октября 2019

Вам необходимо внести это изменение в ваш файл info.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>
...