WKWebview默認(rèn)是不支持打開第三自定義的url scheme,解決辦法就是在頁面加載的錯誤回調(diào)或者跳轉(zhuǎn)回調(diào)里獲取url手動打卡。
swift代碼
func webView(webView: WKWebView, didFailNavigation navigation: WKNavigation!, withError error: NSError) {
handleError(error)
}
func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
handleError(error)
}
func handleError(error: NSError) {
if let failingUrl = error.userInfo["NSErrorFailingURLStringKey"] as? String {
if let url = NSURL(string: failingUrl) {
let didOpen = UIApplication.sharedApplication().openURL(url)
if didOpen {
print("openURL succeeded")
return
}
}
}
}
oc代碼
-(void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error;
{
[self handleError:error];
}
// 頁面加載失敗時調(diào)用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
[self handleError:error];
}
- (void)handleError:(NSError *)error
{
NSString *url = error.userInfo[NSURLErrorFailingURLStringErrorKey].absoluteString;
if ([strRequest hasPrefix:@"weixin://"]) {
// 攔截點擊鏈接
// [self handleCustomAction:strRequest];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:strRequest]];
// 不允許跳轉(zhuǎn)
decisionHandler(WKNavigationActionPolicyCancel);
}else {
// 允許跳轉(zhuǎn)
decisionHandler(WKNavigationActionPolicyAllow);
}
}