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

相關文章
相關標籤/搜索