简述
这个文档给客户端和JsBridge开发者看。API文档请点击。
在JsBridge中,所有逻辑行为由JsBridge库承担,Native端的逻辑主要以在目标页面环境执行给定的js代码即可。
事件扩展
事件扩展主要用于Native端调用JS端逻辑。
当Native端完成某些操作时,需要通知JS端。举个例子:
JS端监听了'replySuccess'事件:
BRBForumJSBridge.addEventListener('replySuccess', function(e) {
alert(JSON.stringify(e));
});
这时JsBridge的逻辑已经将整个监听过程完成。
在这个例子中,'replySuccess'代表了回复成功,所以当Native端完成回复时,需要通知JS端,方式是直接在目标页面执行如下JS:
window.BRBForumJSBridge._emit('replySuccess', `返回数据的JSON字符串`);
也就是说,当Native端需要通知用户端任何事件时,同时兼顾兼容性,只要执行:
window.BRBForumJSBridge && window.BRBForumJSBridge._emit('事件名', `返回数据的JSON字符串`);
Native功能
call
函数主要用于JS端主动调用Native端功能。
当JS端需要主动唤起Native端某些功能时,会直接调用call
函数。举个例子:
BRBForumJSBridge.call('openReplyForm', {
text: '@#21',
topic_id: '61'
}, function (e) {
// Native功能执行之后的回调
alert(JSON.stringify(e));
});
这个例子中用户调用了openReplyForm
的Native功能,打开回复表单。这时候JsBridge将告知Native端:
- 功能名
openReplyForm
- 参数的JSON字符串:
{"text":"@#21","topic_id":"61"}
- 打开回复表单后需要执行的回调JS函数名:
window._brbcbs_.cb_1539746020650
执行完毕的回调JS函数名应当如此使用:
- 假如函数名为
window._brbcbs_.cb_1539746020650
。 - 返回的JAVA或OC对象为
retObj
。 - 那么需要拼接执行的JS代码:
window._brbcbs_.cb_1539746020650
+(
+retObj.to_json
+);
IOS端因为机制问题,所以需要使用webkit.messageHandlers
来实现通信,具体行为如下:
// javascript代码
window.webkit.messageHandlers.[功能名].postMessage({
argJson: '参数的JSON字符串',
callbackFunctionName: '执行成功后需要执行的回调JS函数名',
});
这里传递过去2个参数如上所述。
网友评论