我创建了一个 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
答案 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>