JS-Native通信协议项目汇报
李权
TbJsBridge
交互历程
window.TbJsBridge.payWithNative('0', 'c10061');
- 在native中加入js方法
- webiew调用相应方法能调起native方法
- 问题:安全漏洞
链接截获
交互历程
-
native注册要截获的字段
-
webview跳转时对url进行分析
-
成功则执行对应native代码
-
问题:跳转到空链接、成功后无返回
链接截获
交互历程
// webview
$.location.setHref('http://tieba.baidu.com/paywithnative'
+ '?jump_tieba_native=1&wanttype=0&fromtype=c10061');
// client
if (link.contains(TbConfig.WEB_VIEW_JUMP2NATIVE) &&
link.contains(UrlSchemaHelper.CHANGE_YINJI_SUCCESS)) {
Bundle param = WebviewHelper.parserQuery(link);
if (param != null && UrlSchemaHelper.CHANGE_YINJI_SUCCESS.equalsIgnoreCase(param.getString("path"))) {
MessageManager.getInstance().dispatchResponsedMessageToUI(new
CustomResponsedMessage<Void>(CmdConfigCustom.CMD_YINJIN_CHANGE));
return UrlManager.MATCH;
}
}
TbBridge
交互现状
- native注册对应类与方法
- webiew发起prompt
- native截获并执行
- 返回执行结果
附:H5与端互调文档
http://agroup.baidu.com/ucapp/md/article/29356
TbBridge
交互现状
// webview
// android 7.0.0 以上的版本需要用 tbbridge 组件进行交互
var tbbridge = require('sglobal/widget/tbbridge');
if (tbbridge.support()) {// 是否支持 tbbridge
tbbridge.baseCall(interfaceName, methodName, param);
// tbbridge.baseCall(‘CommonJSBridge’, ‘startLoginModule’, {});
}
// client
public class CommonTbJsBridge implements JsPromptInterface {
private static final String INTERFACE_NAME = "CommonJSBridge";
private static final String START_LOGIN_MODULE = "startLoginModule";
private final TbPageContext<?> mTbPageContext;
public CommonTbJsBridge(TbPageContext<?> tbPageContext) {
mTbPageContext = tbPageContext;
}
private String startLoginModule() {
// 跳转到登录页面
TbadkCoreApplication.getInst().login(mTbPageContext,
new CustomMessage<LoginActivityConfig>(CmdConfigCustom.START_GO_ACTION,
new LoginActivityConfig(mTbPageContext.getPageActivity(), true)));
JSResultData resultData = new JSResultData();
resultData.setStatus(JSResultData.STATUS_SUCCESS);
resultData.setErrorCode(JSResultData.ERRORCODE_NO);
resultData.setErrorMsg("");
return OrmObject.jsonStrWithObject(resultData);
}
后续计划
hybird- webview对native的消息系统
- 两端统一
- 第三方调用使用js做中间层
JS-Native通信协议项目汇报
By leegend
JS-Native通信协议项目汇报
JS-Native通信协议项目汇报
- 416