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端定义方法配合
觉得有用请顶一下,谢谢