WeixinJSBridge在微信app端是如何实现的?
现有h5项目会嵌到app中,其中会有调用app的方法,但是在安卓app中回调方式只能是调window下的方法,比如这样
// 安卓app中
getWebView().evaluateJavascript("javascript:callbackFun_getLocation({"latitude":22,"longitude":113})", new ValueCallback<String>() { [@Override](/user/Override) public void onReceiveValue(String s) { //调用h5返回的的结果 } })
// js中 callbackFun_toAppPage只能挂在window下,否则app会找不到此方法
const opt = {"callMethod":"getLocation","parameters":{"name":"getLocation","pageParams":{"callback":"callbackFun_getLocation"}}};
bridge.call('getLocation', opt, function(res) {
window.callbackFun_getLocation({...res});
});
但是微信jssdk就不会有这种难受的回调方式 http://res.wx.qq.com/open/js/jweixin-1.6.0.js,使用success的回调
wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
var speed = res.speed; // 速度,以米/每秒计
var accuracy = res.accuracy; // 位置精度
}
});
看过一些三方的JSBridge,比如https://github.com/lzyzsd/JsBridge ,但是会替换现有的webview。
请问有什么好的方法能做到和微信调用的方式类似?或者有什么好的做JSBridge方法?