美文网首页
iOS 11下WKWebViewJavascriptBridge

iOS 11下WKWebViewJavascriptBridge

作者: 绚雨蓝了个枫 | 来源:发表于2017-12-19 17:08 被阅读501次

最近APP项目在iOS 11 下运行的时候,出现了崩溃。情况如下:就是在使用WKWebView加载本地HTML文件过程中,突然崩溃,实在费解,找了好久,得到一个解决办法,在此记录下来。首先项目中需要JS和原生交互,所以使用了第三方WKWebViewJavascriptBridge,问题就是出现在了这个第三方里面:

首先找到WKWebViewJavascriptBridge.m文件,然后在此文件中找到以下方法:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    if (webView != _webView) { return; }
    NSURL *url = navigationAction.request.URL;
    __strong typeof(_webViewDelegate) strongDelegate = _webViewDelegate;

    if ([_base isWebViewJavascriptBridgeURL:url]) {
        if ([_base isBridgeLoadedURL:url]) {
            [_base injectJavascriptFile];
        } else if ([_base isQueueMessageURL:url]) {
            [self WKFlushMessageQueue];
        } else {
            [_base logUnkownMessage:url];
        }
        decisionHandler(WKNavigationActionPolicyCancel);
       //***********************(敲黑板、划重点)***********************
        return;// iOS11或xcode9中,此处必须要加一个return,否则就会崩溃。
    }
    
    if (strongDelegate && [strongDelegate respondsToSelector:@selector(webView:decidePolicyForNavigationAction:decisionHandler:)]) {
        [_webViewDelegate webView:webView decidePolicyForNavigationAction:navigationAction decisionHandler:decisionHandler];
    } else {
        decisionHandler(WKNavigationActionPolicyAllow);
    }
}

相关文章

网友评论

      本文标题:iOS 11下WKWebViewJavascriptBridge

      本文链接:https://www.haomeiwen.com/subject/ojhiwxtx.html