webview調用ios或者安卓的方法(內嵌h5頁面調用app原生方法)

1.配合使用調用app原生的方法(h5頁面不須要回調和數據)web

  

實例1
    // 通知客戶端,token失效
    callTokenLostToApp(){
        let boswer = vm.config.getBrowser()
        if(boswer == 'isiOS'){
            window.webkit.messageHandlers.tokenExpiredTransmit.postMessage(1);
        }else if(boswer == 'isAndroid'){
            window.tokenExpiredTransmit.jsMethod(1)
        }
    },
實例2
// 關閉頁面
    closePageApp(cb){
        let boswer = vm.config.getBrowser()
        // IOS 關閉頁面
        if(boswer == 'isiOS'){
            // 這段代碼是固定的,必需要放到js中
            window.webkit.messageHandlers.closePage.postMessage(1);
        // 安卓關閉頁面
        }else if(boswer == 'isAndroid'){
        window.closePage.jsMethod(1)
  }  },

2.配合使用調用app原生的方法(h5頁面須要回調和數據)app

// 從App獲取UUID(手機惟一標識)
// 從App獲取UUID(手機惟一標識)
    getSystemInfoFromApp(cb){
        let boswer = vm.config.getBrowser()
        // IOS 獲取UUID
        if(boswer == 'isiOS'){
            // 這段代碼是固定的,必需要放到js中
            function setupWebViewJavascriptBridge(callback) {
                if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
                if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
                window.WVJBCallbacks = [callback];
                var WVJBIframe = document.createElement('iframe');
                WVJBIframe.style.display = 'none';
                WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
                document.documentElement.appendChild(WVJBIframe);
                setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
            }

            /*與OC交互的全部JS方法都要放在此處註冊,才能調用經過JS調用OC或者讓OC調用這裏的JS*/
            setupWebViewJavascriptBridge(function(bridge) {
                /*JS給ObjC提供公開的API,ObjC端經過註冊,就能夠在JS端調用此API時,獲得回調。ObjC端能夠在處理完成後,反饋給JS,這樣寫就是在載入頁面完成時就先調用*/
                bridge.callHandler('getSystemInfoFromApp', function(responseData) {
                    if(cb && typeof cb == 'function'){
                        cb(responseData)
                    }else{
                        return responseData
                    }
                })
            })
        // 安卓獲取UUID
        }else if(boswer == 'isAndroid'){
            let systemInfo = window.AndroidWebView.getSystemInfoFromApp();
            if(cb && typeof cb == 'function'){
                cb(systemInfo)
            }else{
                return systemInfo
            }
        }
    },

 標紅字段爲調用的app端定義的方法名,須要app端定義方法配合post

以爲有用請頂一下,謝謝spa

相關文章
相關標籤/搜索