美文网首页
WKWebView 如何拿到Ajax里的请求参数和返回报文?

WKWebView 如何拿到Ajax里的请求参数和返回报文?

作者: SDBridge | 来源:发表于2017-11-24 18:10 被阅读696次

WKWebView 如何拿到Ajax里的请求参数和返回报文?

Xcode 8.2

1.JS端在Ajax 网络库里面 通过调用JSBridge传过来。 喔,用的是版本是。

pod 'WebViewJavascriptBridge', '~> 6.0.2'

2.ios端注册两个JSB

 /*用于接收 JS端传来的 日志 */
    [self.bridge registerHandler:@"log" handler:^(id data, WVJBResponseCallback responseCallback) {
        
    }];

    /*控制JS端是否 传日志给ios 端 */
    [self.bridge registerHandler:@"isSendLogToNative" handler:^(id data, WVJBResponseCallback responseCallback) {
        
        responseCallback(catchJsLogFlag);
    }];

catchJsLogFlag属于宏定义 App Release模式不传日志 Debug模式 传日志

#if DEBUG
#define catchJsLogFlag @"1"
#else
#define catchJsLogFlag @"0"
#endif

JS端

在main.js添加变量 releaseLog

//控制上线的日志 是否打印   默认上线不打印日志false,调试打印日志 true
window.releaseLog = false;

在main.js 调用

jsBridge.callHandler(
    protocolUrl.call.isSendLogToNative,
    '',
    function (responseData) {
       if(responseData && responseData == '1'){
           window.releaseLog = true;
       }else{
           window.releaseLog = false;
       }
    }
)

在common.js里面添加一个方法:

  //调用全局打印日志函数 并把日志送给native端
    //message 支持json对象  和string
    log : function(message) {
        //保证release上线后不打印日志
        if(!window.releaseLog){
            return;
        }

        //只有ios设备才会调用
        if (window.device_type.indexOf("ios app") != -1){
            jsBridge.callHandler(protocolUrl.call.log,message,function (responseData) {

            });
        }
    }

最后Ajax请求的 的成功回调和失败回调里面 都调用公共log函数。

效果图如下:


效果图.png
大功告成!

相关文章

网友评论

      本文标题:WKWebView 如何拿到Ajax里的请求参数和返回报文?

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