與IOS交互時(shí),使用WebViewJavascriptBridge是不錯(cuò)的選擇
使用
對(duì)于前端而言裙士,只需要先初始化函數(shù)
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 = 'https://__bridge_loaded__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function () { document.documentElement.removeChild(WVJBIframe) }, 0)
}
之后調(diào)用該方法即可
setupWebViewJavascriptBridge(function (bridge) {
/* Initialize your app here */
bridge.registerHandler('removeArea', function(data, responseCallback) {
// console.log("JS Echo called with:", data);
})
bridge.callHandler('getUserInfo', null, function responseCallback(responseData) {
})
})
需要注意的是
bridge.registerHandler
里的兩個(gè)參數(shù)分別為膊爪,js提供給IOS客戶端的方法名自阱,另一個(gè)則是當(dāng)客戶端調(diào)用該方法后的回調(diào)函數(shù)
bridge.callHandler
里的三個(gè)參數(shù)為,IOS端提供的方法米酬,該方法接收的參數(shù)沛豌,在調(diào)用方法后的回調(diào)
說(shuō)明
WebViewJavascriptBridge是一個(gè)雙方提供方法名并且橋接起來(lái)的工具,需要注意的是赃额,數(shù)據(jù)的交互都是基于回調(diào)函數(shù)加派,即具有延時(shí)性,盡量在事件中使用該方法跳芳, 當(dāng)需要從客戶端獲取比如用戶信息等全局信息時(shí)芍锦,需要注意該延時(shí)性