美文网首页
webjs与native交互SDK(android,ios通用)

webjs与native交互SDK(android,ios通用)

作者: 默默先生Alec | 来源:发表于2016-12-26 16:45 被阅读319次

说明:嵌入客户端中的H5页面,可能会出现需要与native交互的触发操作或传递数据的情况。在此说明一种实现方案,以供参考。

一、使用到第三方工具

IOS 

Android

二、使用方法

1、定义一个设备类型判断方法

//设备类型判断

function deviceType(){

var  isIDevice = (/iphone|ipod/gi).test(navigator.platform),

isIDeviceIpad = (/ipad/gi).test(navigator.platform),

isAndroid = (/Android/gi).test(navigator.userAgent);

if ((isIDevice || isIDeviceIpad) && !isAndroid) {

return "isIos";

}else if(isAndroid){

return "isAndroid";

}

}

2、声明初始化方法

function setupWebViewJavascriptBridge(callback) {

if (deviceType()=="isIos") {

//ios监听window.WebViewJavascriptBridge

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)

} else if(deviceType()=="isAndroid"){

//安卓监听window.WebViewJavascriptBridge

if (window.WebViewJavascriptBridge) {

callback(WebViewJavascriptBridge)

} else {

document.addEventListener(

'WebViewJavascriptBridgeReady'

, function() {

callback(WebViewJavascriptBridge)

},

false

);

}

}

}

3、调用初始化方法,并注册相关交互方法

setupWebViewJavascriptBridge(function(bridge) {

if(deviceType()=="isAndroid"){

//若果是安卓必须要注册bridge.init,用于接收客户端反馈

bridge.init(function(message, responseCallback) {});

}

// 获取分享按钮DOM

var weixinShareButton = document.getElementById("share_weixin");

// 绑定点击事件,与客户端交互

weixinShareButton.onclick = function(e) {

e.preventDefault();

//调用客户端方法

bridge.callHandler('nativeShare',

{'shareType': 'weixin'},

function(response) {

/* do something */

}

);

}

pyqShareButton.onclick = function(e) {

e.preventDefault();

bridge.callHandler('nativeShare',

{'shareType': 'pyq'},

function(response) {

/* do something 接收客户端响应*/

}

);

}

});

相关文章

网友评论

      本文标题:webjs与native交互SDK(android,ios通用)

      本文链接:https://www.haomeiwen.com/subject/htwjvttx.html