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