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


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

  

實例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獲取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端定義方法配合

覺得有用請頂一下,謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM