在android开发中,存在Android的原生Native层与JS网页混合开发的需求,此时可以使用WebViewJavascriptBridge框架进行桥接,实现JS与Native层相互通信。
下面对WebViewJavascriptBridge框架的实现流程做简单解释:
var wx = {
invoke: function(funcName, params, callBack) {
console.log('invoke: funcName=' + funcName + ", params=" + params + ", callBack=" + callBack);
var finalParams = {'funcName': funcName, 'orgparams': params};
window.WebViewJavascriptBridge.callHandler('submitFromWeb', finalParams, callBack);
},
};
//WebViewJavascriptBridge流程解释
//注册接口注释
//注册接口之后,当js层点击启动VPN时,
//1. js层:通知Native层有消息排队: 触发 BridgeWebViewClient.shouldOverrideUrlLoading(): url为 yy://__QUEUE_MESSAGE__/
//2. Native层:接收到通知(yy://__QUEUE_MESSAGE__/),通过 loadUrl("javascript:WebViewJavascriptBridge._fetchQueue();"), 想js层获取数据。
//3. js层: 组装js层需要发送的数据,再次触发 BridgeWebViewClient.shouldOverrideUrlLoading(),数据在url中,解析如下:
//eg: yy://return/_fetchQueue/[{"handlerName":"submitFromWeb","data":{"funcName":"ext_hulk_Start","orgparams":{"