jsb.js
实现js和客户端互相调用方法
客户端会给js提供一个名为JavascriptBridge变量
var API_NAMESPACE = '__JavascriptBridge__';
var API = window[API_NAMESPACE] || null;
JS中使用到的方法:(前端并不是很清楚这些方法具体做了什么)
API.require
API.setResult
API.getCommands
API.getUserInfoCallback
API.setJpushAlias
API.getZuid()
依赖于此API对象,实现了两种场景的交换:
- 给java调用的js方法
例子:
- 给java调用的js方法
//安卓客户端点击返回按钮
native_android.jsb.addJavascriptMethod('backButtonCallback',function(message){
if(message) {
if(Object.prototype.toString.call(message)==="[object String]"){
message=JSON.parse(message);
}
if(message.page == "loading"){
com.jumpUrl("/bill?footer=1");
}else if(message.page == "result"){
com.jumpUrl("/bill?footer=1");
}
}
})
目前看到以下几个定义的js方法
shareCallback
statisticsCallback
backButtonCallback
alipayFailCallBack
- 调用java方法
定义了require方法供js调用,核心还是依靠api.require
- 调用java方法
/**
* 请求调用java方法
* @param {[type]} cmd [description]
* @param {[type]} params [description]
* @param {Function} callback [description]
* @return {[type]}
*/
context.require = function(cmd, params, callback){
params = params || '{}';
var result = api.require(cmd, JSON.stringify(params));
if(callback && result){
result = JSON.parse(result);
}
callback && callback(result);
}
js具体调用
- 主体项目只看到这两种类型
native_android.jsb.require('messagebox', {{type: "title", url_title:'***', need_back: true, hideMenu: true}})
native_android.jsb.require('messagebox', {type:"relogin"});
- 授信项目有额外
//印尼通知客户端开启用户权限
native_android.jsb.require('messagebox', {type:"openAuthority"});
//印尼通知客户端获取用户权限
native_android.jsb.require('messagebox', {type:"getAuthority"});