使用框架
- 使用大鬼头的JsBridge框架
JS调取原生
1.Android使用如下
webView.registerHandler("registerHandlerFromNative", new BridgeHandler() {
@Override
public void handler(String data, CallBackFunction function) {
...
}
}
});
data参数规则如下
//action 不可为空 方法名 调用原生函数 与 原生函数命名统一
//needCallBack 可为空 默认为0 是否需要原生回调
//message 可为空, 使用场景为显示页面错误等供原生使用
//parameter 可为空 附加参数,用于复杂业务时,向原生传递参数 json结构
例如
{
"action":"executeGetToken",
"needCallBack":"1",
"message":"获取Token",
"parameter":{
"state":1
}
}
2.原生注册hander(registerHandlerFromNative)提供方法如下
- executeGetPhoto(获取图片)
{
"action":"executeGetPhoto",
"needCallBack":"1",
"message":"获取照片",
"parameter":{ }
}
- executeGetToken(获取token)
{
"action":"executeGetToken",
"needCallBack":"1",
"message":"获取token",
"parameter":{
"tipMessage":"xxx业务需要授权"//用于弹窗展示
}
}
- executeInvalidLogin(登录失效)
{
"action":"executeInvalidLogin",
"needCallBack":"1",
"message":"登录失效",
"parameter":{ }
}
- executeShareWeb(调用分享)
{
"action":"executeShareWeb",
"needCallBack":"1",
"message":"调用分享",
"parameter":{
"shareUrl":"http://www.baidu.com",
"shareContext":"shareContext",
"shareTitle":"shareTitle",
"imgUrl":"",
}
}
- executeShowLoading(显示加载框)
- executeDismissLoading(隐藏加载框)
- executeShowLoadFailed(加载失败)
- executeShowNoNetwork(显示无网络)
原生调取JS
需要js端提供或者共同协商