美文网首页
协议拦截

协议拦截

作者: 小凡凡520 | 来源:发表于2018-11-21 23:11 被阅读7次
    1.拦截代理:
      让webView执行js语句
    2.js调用oc
      通过webView代理方法、拦截网页的重定向请求。判断是否需要调用oc方法
    3.oc调用js
      通过webView直接执行js语句的方法、直接调用js方法(等于在浏览器控制台中直接执行js语句)
    
    js调用OC

    只需要正常一个url定向

      <a href="appscheme://shouAlert?提示&这是一个js发起的方法&ok">弹窗</a>
    

    OC中的操作

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
        NSURL * url = [request URL];
        NSString * scheme = [url scheme];
        
        //比对scheme是否是需要app进行处理
        if ([scheme isEqualToString:@"appscheme"]) {
            //获得方法名
            NSString * host = [url host];
            NSString * queryStr = [[url query] stringByRemovingPercentEncoding];
            //获得参数
            NSArray * queryArr = [queryStr componentsSeparatedByString:@"&"];
            
            if ([host isEqualToString:@"shouAlert"]) {
                //你也可以做个防止越界的容错
                [self showAlertWithTitle:queryArr[0] message:queryArr[1] cancelBtnTitle:queryArr[2]];
            }
            
            return NO;
        }
        return YES;
    }
    
    - (void)showAlertWithTitle:(NSString *)title message:(NSString *)message cancelBtnTitle:(NSString *)cancelBtnTitle {
        UIAlertController * alert = [[UIAlertController alloc]init];
        alert.title = title;
        alert.message = message;
        UIAlertAction * action = [UIAlertAction actionWithTitle:cancelBtnTitle style:UIAlertActionStyleDefault handler:nil];
        [alert addAction:action];
        [self presentViewController:alert animated:YES completion:nil];
    }
    
    oc调用js

    先在js中约定一个js方法备用

    <script>
          function showPrompt(msg,placeholder) {
              prompt(msg,placeholder);
          }
      
    </script>
    

    webView为我们提供了一个方法

    - (void)btnClick {
        [self.webView stringByEvaluatingJavaScriptFromString:@"showPrompt('123','321')"];
    }
    

    这个方法就相当于在浏览器的console中直接输入一段js代码

    相关文章

      网友评论

          本文标题:协议拦截

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