WKWebview 拦截超链接跳转其他应用

93 阅读1分钟

近期遇到一个问题,WKWebview之后超链接无法唤起微信 最终排查到是没有加这个delegae方法

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {}

通过获取navigationAction.request.URL是可以拿到当前webView的url,当判断非网络协议或者为非about blank 空白页时则允许跳转外部

NSURL *url = navigationAction.request.URL;

    NSString *scheme = url.scheme;

    if (navigationAction.targetFrame == nil) {

        [[UIApplication sharedApplication] openURL:navigationAction.request.URL];

        decisionHandler(WKNavigationActionPolicyAllow);

    } else {

        if (![scheme isEqualToString:@"https"] && ![scheme isEqualToString:@"http"] && ![scheme isEqualToString:@"about"]) {

            [[UIApplication sharedApplication] openURL:url];

            decisionHandler(WKNavigationActionPolicyCancel);

        } else {

            decisionHandler(WKNavigationActionPolicyAllow);

        }

    }