h5(vue)嵌套ios和android双向交互

以前跟客户端联调可能没有注意到细节问题,此次开发又遇到联调,统一整理下,而后本身也封装一套基础代码
注意android如下状况---安卓没带参数,h5端也须要不带参数 ,安卓须要参数,这边也须要携带参数 不然有bug
注意ios状况下 就算ios不须要携带参数,也须要传空

封装bridge.js

// 封装一个bridge.js 文件 ,而后并把这个文件在main.js 挂载到vue原型上
import utils from '@extend/util/util.js'
// utils.deviceType 是获取设备类型的方法
export default {
    callhandler (name,callback,data) {
        let result = '';
        if(utils.deviceType === 'Android'){
            if(data){
                // 这是android提早与安卓开发人员协商好
                result = window.android[name](data);
            }else{
                window.android[name]();
            }
        }
        if(utils.deviceType === 'IOS'){
            result = window.webkit.messageHandlers[name].postMessage(data);
        }
        // 这里考虑到可能有的api有返回值,因此返回了个result
        callback && callback(result)
    },
    registerhandler (name, callback) {
        if(utils.deviceType === 'Android' || utils.deviceType === 'IOS'){
            window[name] = res => {
                let data = '';
                if(res){
                    data = JSON.parse(JSON.stringify(res)) 
                }
                callback && callback(data)
            }
        }
    }
}

H5调用客户端

// 只须要一句话调用便可
this.$bridge.callhandler('finish');

实际应用--在填写完资料后通知客户端vue

clipboard.png

客户端调H5

// 须要提早先注册
this.$bridge.registerhandler('setUserInfo', () => {
    this.commit() // commit写在本地的提交方法
})

实际应用--在填写完资料后客户端点击右上角保存按钮android

clipboard.png

参考文章
WebViewJavascriptBridgeios

相关文章
相关标签/搜索