WKWeb View是否可以在快速的iOS中完成页面的加载?

时间:2018-08-21 10:52:04

标签: ios swift wkwebview wkwebviewconfiguration

我创建了一个 WKWebView 。它加载MSB的网址,即。我的学校花钱。它加载了几乎所有要付款的网址。但是没有调用一个网址 didFinishLoad 。我已经为Web视图添加了所有代表。但是肯定不能正常工作。整个过程可以在iPhone的网络浏览器中正常运行。

下面是我为此添加的代码

foreach (string s in @AccountName.Split(" ".ToCharArray()))
    shortName += s.Substring(0,1).ToUpper();

导航方法

let preferences = WKPreferences()
        preferences.javaScriptEnabled = true
        let configuration = WKWebViewConfiguration()
        configuration.preferences = preferences
        self.webView = WKWebView(frame: frame, configuration: configuration)
        self.view.addSubview(webView)
        self.webView.navigationDelegate = self
        self.webView.uiDelegate = self

1 个答案:

答案 0 :(得分:0)

您需要为该特定网址添加例外(SecTrustSetExceptions)。由于其签名身份和您的WKWebView存在一些冲突。

我的应用程序中也遇到了同样的问题,并通过使用以下代码段成功解决了该问题。

尝试一下:

    extension PaymentWebViewController: WKNavigationDelegate {
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        decisionHandler(.allow)
    }

    func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
        decisionHandler(.allow)
    }

    func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        let serverTrust = challenge.protectionSpace.serverTrust
        let exceptions = SecTrustCopyExceptions(serverTrust!)
        SecTrustSetExceptions(serverTrust!, exceptions)
        completionHandler(.useCredential, URLCredential(trust: serverTrust!))
    }
}

希望您已经在info.plist中进行了设置:

    <key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
</dict>