H5与App的交互(WebViewJavascriptBridge)

最近有时间整理下H5与APP的交互框架(WebViewJavascriptBridge),既可以和ios交互也可以和安卓交互,我只做了和IOS的交互,所以只阐述和IOS的交互。

1:JS端的操作

/* WebViewJavascriptBridge框架使用  这段代码是固定的,必须要放到js中*/
       function setupWebViewJavascriptBridge(callback) {
            if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
            if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
            window.WVJBCallbacks = [callback];
            var WVJBIframe = document.createElement('iframe');
            WVJBIframe.style.display = 'none';
            WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
            document.documentElement.appendChild(WVJBIframe);
            setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
        }


	/*与OC交互的所有JS方法都要放在此处注册,才能调用通过JS调用OC或者让OC调用这里的JS*/
         setupWebViewJavascriptBridge(function(bridge) {
                         
	   //js调用oc的方法  clickHeadImage(方法名与APP端保持一致)  大括号内是传递参数的方式
           window.WebViewJavascriptBridge.callHandler('clickHeadImage', {"userId":1}, function(response) {
                 console.log('JS got response', response);
            });

         //oc调用Js的方法,并且有返回函数   callHeandler(方法名与app端保持一致)  data(IOS传过来的数据)
           bridge.registerHandler('callHandler', function(data, responseCallback) {
                                
           //js回调函数返回数据
            var responseData = { 'Javascript Says':'I am Js, CallBack Now!!!!!' }
            responseCallback(responseData,data)

             })
       });

2:IOS端的操作,因为我不是很懂IOS,所以只能贴出自己找的方法了,仅供参考。

1:导入头文件
#import "WebViewJavascriptBridge.h"
@property WebViewJavascriptBridge* bridge;
2:实例化这个_bridge

//开启调试信息
 [WebViewJavascriptBridge enableLogging];

//关联webView
 _bridge = [WebViewJavascriptBridge bridgeForWebView:_webview];
3:(1)在oc中注册 & (2)在js中处理回调 

  //点击js事件 js向oc通信(触发oc事件)
    [_bridge registerHandler:@"registerHandler" handler:^(id data, WVJBResponseCallback responseCallback) {
        NSLog(@"datattatatatat=== %@",[NSString stringWithFormat:@"%@",data]);

        UIAlertView *aler = [[UIAlertView alloc]initWithTitle:nil message:@"js调用oc的按钮提示" delegate:self      cancelButtonTitle:@"取消" otherButtonTitles:nil];
        aler.tag = 100;

        [aler show];

    }];

    id data = @{@"信息来源:":@"点击oc事件,oc向js发送信息并得到js反馈"};
    [_bridge callHandler:@"callHandler" data:data responseCallback:^(id responseData) {
        NSLog(@"   =========  %@",responseData);
        self.lab.text = [NSString stringWithFormat:@"btn2 获得js反馈 %@",responseData];
    }];

WebViewJavascriptBridge这个H5与APP交互的框架还是挺不错的,既可以和IOS交互也可以和安卓交互,因为我做的是H5端的,安卓和IOS不是很懂,所以有说的不对的地方还希望有看到朋友指教下。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值