美文网首页
WKWebview的学习 - WKNavigationDeleg

WKWebview的学习 - WKNavigationDeleg

作者: Sweet丶 | 来源:发表于2017-10-18 13:58 被阅读93次

    / 关于WKNavigationDelegate的理解网上有很多,全面学习WKNavigationDelegate之后,在此列举自己开发时使用WKWebview的不足之处

    1.决定webview是否加载新的请求的代理方法,在这里可以增加网络判断的处理和拦截请求的操作(如果未实现这个方法,在加载非链接的url会导致崩溃)
     - (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler;

    2. 在自建网络协议的情况下,服务器会请求认证,这个时候就会调用下面的方法
    - (void)webView:(WKWebView*)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge completionHandler:(void(^)(NSURLSessionAuthChallengeDispositiondisposition,NSURLCredential*_Nullablecredential))completionHandler;

    3. 在iOS 9以上系统,当 WKWebView 总体内存占用过大,页面即将白屏的时候,系统会调用的代理方法,在该函数里执行[webView reload](这个时候 webView.URL 取值尚不为 nil)解决白屏问题。在一些高内存消耗的页面可能会频繁刷新当前页面,H5侧也要做相应的适配操作。在使用这个方法时需条件编译
    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
    - (void)webViewWebContentProcessDidTerminate:(WKWebView*)webView
    {
      [webView reload];
    }
    #endif

    4. 使WKWebView支持打电话、跳转App Store功能的方法
    - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
      NSURL*URL = navigationAction.request.URL;
      UIApplication*app = [UIApplicationsharedApplication];
      if([URL.schemeisEqualToString:@"tel"] && [appcanOpenURL:URL]) {// 1、使支持打电话
        [appopenURL:URL];
        // 一定要加上这句,否则会打开新页面
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
      }
      if([URL.absoluteStringcontainsString:@"itunes.apple.com"] && [appcanOpenURL:URL]) {// 2、跳转appstore
        [appopenURL:URL];
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
      }
      decisionHandler(WKNavigationActionPolicyAllow);
    }

    推荐一个对WKWebview解读比较深的博客
    WKWebView 那些坑

    相关文章

      网友评论

          本文标题:WKWebview的学习 - WKNavigationDeleg

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