JS-Native通信协议项目汇报
李权
TbJsBridge
window.TbJsBridge.payWithNative('0', 'c10061');
链接截获
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
附: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);
}