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端定義方法配合
覺得有用請頂一下,謝謝