前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原 WebViewJavascriptBr

原 WebViewJavascriptBr

作者头像
jojo
发布2018-05-03 15:09:47
7310
发布2018-05-03 15:09:47
举报
文章被收录于专栏:jojo的技术小屋jojo的技术小屋

作者:汪娇娇

时间:2017年8月3日

H5和客户端(IOS、安卓)想要交互怎么办(手动头疼)?

答案是肯定的,必要的时候还是要借助一定的工具啦。

我主要研究的是JavascriptBridge,所以今天要说的就这种方法。

而且基于我自己是做前端的,所以单方面的只说JS部分,客户端可以参考:

https://github.com/wangjiaojiao77/WebViewJavascriptBridge(IOS)和

https://github.com/wangjiaojiao77/JsBridge(安卓)。

分批说,先说IOS吧。

1、IOS

先把下面这段代码(这段代码可是会更新的哦,注意及时更新就ok啦)copy到你的JS中。

代码语言:javascript
复制
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 = 'https://__bridge_loaded__';
	document.documentElement.appendChild(WVJBIframe);
	setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
}

然后直接写交互就ok啦(交互无非也就2种:注册一个方法调用已经注册好的方法)。

代码语言:javascript
复制
setupWebViewJavascriptBridge(function(bridge) {
	
	//注册一个方法(方法名是“JS Echo”),客户端进行调用(方法名也是“JS Echo”),responseCallback是回调函数
	bridge.registerHandler('JS Echo', function(data, responseCallback) {
		console.log("JS Echo called with:", data)
		responseCallback(data)
	})

    //客户端已经注册好一个名为“ObjC Echo”的方法,H5直接进行调用(方法名也为“ObjC Echo”)就行,调用的时候可以传客户端需要的参数
	bridge.callHandler('ObjC Echo', {'key':'value'}, function responseCallback(responseData) {
		console.log("JS received response:", responseData)
	})
})

2、Android

so,安卓也很easy啦。

先把下面这段代码(这段代码可是会更新的哦,注意及时更新就ok啦)copy到你的JS中。

代码语言:javascript
复制
function connectWebViewJavascriptBridge (callback) { 
     if (window.WebViewJavascriptBridge) {
           callback(WebViewJavascriptBridge)
     } else {
           document.addEventListener(
               'WebViewJavascriptBridgeReady'
                , function() {
                     callback(WebViewJavascriptBridge)
                },
                false
           );
     }
}

然后直接写交互就ok啦(其实和IOS一样)。

代码语言:javascript
复制
connectWebViewJavascriptBridge (function(bridge) {
	
	//注册一个方法(方法名是“JS Echo”),客户端进行调用(方法名也是“JS Echo”),responseCallback是回调函数
	bridge.registerHandler('JS Echo', function(data, responseCallback) {
		console.log("JS Echo called with:", data)
		responseCallback(data)
	})

    //客户端已经注册好一个名为“ObjC Echo”的方法,H5直接进行调用(方法名也为“ObjC Echo”)就行,调用的时候可以传客户端需要的参数
	bridge.callHandler('ObjC Echo', {'key':'value'}, function responseCallback(responseData) {
		console.log("JS received response:", responseData)
	})
})

基本的就是这么写就完啦,详细的可以参照我上面发的网址~~~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、IOS
  • 2、Android
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档