栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过JsBridge进行app与webview通信(Vue版)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过JsBridge进行app与webview通信(Vue版)

通过JsBridge进行app与webview通信(Android版)

一、问题

现在很多app都是嵌套h5页面的混合型app,实现方式就是app加一个webview,webview加入h5的项目地址,那么有时候我们需要获取设备id、获取定位等等信息,都是h5获取不了的,这时候就需要app与h5建立一个通信,实现信息传输,我们可以使用JsBridge来实现这个需求。

二、JsBridge

通过JsBridge,Web端可以调用Native端的Java接口,同样Native端也可以通过JsBridge调用Web端的Javascript接口,实现彼此的相互调用。
了解JsBridge-https://github.com/lzyzsd/JsBridge

三、Vue2结合WebViewJavascriptBridgeReady 1.封装一个JsBridge方法

JsBridge.js

//自定义JS注册事件监听 connectWebViewJavascriptBridge 方法名可改
function connectWebViewJavascriptBridge(callback) {
    if (window.WebViewJavascriptBridge) {
        callback(window.WebViewJavascriptBridge)
    } else {
        document.addEventListener(
            'WebViewJavascriptBridgeReady'
            , ()=> {
                callback(window.WebViewJavascriptBridge)
            },
            false
        );
    }
}

//注册回调函数,第一次连接时调用 初始化函数 connectWebViewJavascriptBridge和上面一致
connectWebViewJavascriptBridge(function(jsbridge) {
    //初始化 必须有 Android 通过 JSBridge 调用 默认JS bridge.init bridgeWebView.send调用
   jsbridge.init(function(message, callback) {
       callback({'Javascript Responds': 'Android调用JS初始化方法!'});
   });
})

export default  {
    registerHandler: function(name, fun) {
        connectWebViewJavascriptBridge(function(jsbridge){
            //Android调用js方法:functionInJs方法名称需要保持一致 ,并返回给Android通知
           jsbridge.registerHandler(name, function(data, responseCallback) {
                responseCallback(fun(data));
            });
        })
    },
    callHandler: function(name, data, fun) {
        connectWebViewJavascriptBridge(function(jsbridge){
            //JS调用Android方法:接收Android传递过来的数据,并做处理
           jsbridge.callHandler(name, data, function(data) {
                fun(data);
            });
        })
    }
}
2.main.js
import JsBridge from "./utils/JsBridge"

Vue.prototype.$jsbridge = JsBridge;
3.在app.vue使用(其他文件也可以)





四、结合Android实现效果

通过JsBridge进行app与webview通信(Android版)
运行出来的界面

JS 通过 JSBridge 调用 Android

Android 通过 JSBridge 调用 JS

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号