WKWebViewJavascriptBridge webView:didReceiveAuthenticationChallenge crash攒读,現(xiàn)象如下:
didReceiveAuthenticationChallenge這個crash一般是因為webview重定向時缺乏信任證書或相應(yīng)的頁面不允許外部訪問卓鹿。WKWebViewJavascriptBridge相關(guān)聯(lián)的crash毫蚓,是在WKWebViewJavascriptBridge內(nèi)部的didReceiveAuthenticationChallenge方法。一般有以下兩種解決方案:
第一種方法:
#pragma mark --- 缺乏證書信任 - (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *_Nullable))completionHandler { ? ? if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { ? ? ? ? if (challenge.previousFailureCount == 0) { ? ? ? ? ? ? NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; ? ? ? ? ? ? completionHandler(NSURLSessionAuthChallengeUseCredential, credential); ? ? ? ? } else { ? ? ? ? ? ? completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil); ? ? ? ? } ? ? } }
這種情況就是強制信任挣输,告訴webview可以直接跳轉(zhuǎn)丛塌,就類似瀏覽器彈出是否信任該網(wǎng)站,選擇信任的情況帽驯。
第二種方法:
這種一般是因為H5頁面端的跳轉(zhuǎn)頁面出錯的問題,跳轉(zhuǎn)到指定環(huán)境允許下才能訪問的頁面书闸。例如:接入微信支付尼变,H5端點擊支付時,訪問了微信小程序支付的方式梗劫,沒有調(diào)起微信應(yīng)用跳轉(zhuǎn)享甸。由于這種情況微信只允許在微信內(nèi)部環(huán)境訪問,所以直接閃退梳侨。
當(dāng)報錯didReceiveAuthenticationChallenge時蛉威,開頭又不是webview時,一般考慮第二種情況走哺。
如有錯誤蚯嫌,歡迎指正。