分安卓和IOS,安卓可以直接调用,iso需要通过桥来调用
1 2 3 4 5 6 7 8 9 10 11 12 13
| var u = navigator.userAgent; if(u.indexOf('Android') > -1 || u.indexOf('Adr') > -1){ //android终端 let appData = window.android.原生方法(参数); if (appData) {//返回值 } }else if(!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)){ //ios终端 utils.setupWebViewJavascriptBridge((bridge)=>{ bridge.callHandler('原生方法',参数, function (response) { // response返回值 }); }) }
|
ISO的桥
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; // 创建一个 WVJBCallbacks 全局属性数组,并将 callback 插入到数组中。 var WVJBIframe = document.createElement('iframe'); // 创建一个 iframe 元素 WVJBIframe.style.display = 'none'; // 不显示 WVJBIframe.src = 'https://__bridge_loaded__'; // WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__'; // 设置 iframe 的 src 属性 document.documentElement.appendChild(WVJBIframe); // 把 iframe 添加到当前文导航上。 setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0) }
|