- Android ```javascript // 注:传参上由于安卓不能接收或发送对象参数,所以需要把对象改为JSON字符串 JSON.stringify() JSON.parse()
// h5调用android方法 由安卓注入Android这个对象(该对象名可随意由安卓定义),即可全局使用 Android.method();
// android调用h5方法 h5挂载方法到window对象里 // h5注册 window.method();
// android调用 String method = “javascript:method()”; webView.loadUrl(method);
- Ios
```javascript
// 方式1 h5端跳转链接, ios端拦截链接,此方法无返回值
window.open('link', '_self');
// 方式2 WebViewJavascriptBridge
// 注入WebViewJavascriptBridge
function setupWebViewJavascriptBridge(ck: Ck): void {
if (window.WebViewJavascriptBridge) {
return ck(window.WebViewJavascriptBridge);
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(ck);
}
window.WVJBCallbacks = [ck];
let iframe: any = document.createElement('iframe');
iframe.style.display ='none';
iframe.src ='wvjbscheme://__BRIDGE_LOADED__';
document.documentElement.appendChild(iframe);
setTimeout(() => {
document.documentElement.removeChild(iframe);
}, 0);
}
// h5调用ios方法
function callHandler(name: string, data: any, ck: (e?: any, ...rest: any[]) => void): void {
setupWebViewJavascriptBridge(bridge => {
bridge.callHandler(name, data, ck);
});
}
// 调用示例
callHandler('method', query, e => {
// done
});
// 为ios注册方法,ios端调用
function registerHandler(name: string, ck: (e?: any, ...rest: any[]) => void): void {
setupWebViewJavascriptBridge(bridge => {
bridge.registerHandler(name, ck);
});
}
//注册示例
registerHandler('method', e => {
// done
})