WeixinJSBridge在微信app端是如何实现的?
发布于 5 年前 作者 agu 9103 次浏览 来自 问答

现有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方法?

回到顶部