h5 ios android 交互设计,WebViewJavascriptBridge(H5与原生交互)

本文介绍了如何使用JavascriptBridge实现H5与iOS、Android客户端的交互。通过在JS中添加特定代码,实现注册方法和调用客户端方法的功能,以解决不同平台之间的通信问题。示例代码展示了在iOS和Android上设置WebViewJavascriptBridge的方法,并提供了简单的交互示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:娇娇jojo

时间:2018年2月5日

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

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

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

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

分批说,先说IOS吧。

1、IOS

先把下面这段代码(这段代码可是会更新的哦,注意及时更新就ok啦)copy到你的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 = 'https://__bridge_loaded__';

document.documentElement.appendChild(WVJBIframe);

setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)

}

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

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中。

function connectWebViewJavascriptBridge (callback) {

if (window.WebViewJavascriptBridge) {

callback(WebViewJavascriptBridge)

} else {

document.addEventListener(

'WebViewJavascriptBridgeReady'

, function() {

callback(WebViewJavascriptBridge)

},

false

);

}

}

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

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)

})

})

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值