H5 与安卓/IOS 通信H5 与安卓/IOS 通信安卓/ios 给 H5 通信H5 给安卓/ios 通信本文使用 md
H5 与安卓/IOS 通信
安卓/ios 给 H5 通信
ios 连接引入 H5 页面,是个用户申请页面,进入页面需要获取到用户的 userId 和 token 然后调接口判断用户是否具备申请资格,进入页面就要拿到就采用的是 url 拼接参数,安卓/ios 在 url 进行参数拼接,前端在 js 里截取。url 拼接参数(适用于活动页、申请页...)
//截取url中的参数
function getUrlValue(kValue) {
var url = window.location.href; //当前页面的地址
var reg = /([^?&=]+)=([^?&=]+)/g, obj = {}, str = url;
url.replace(reg, function () {
obj[arguments[1]] = arguments[2];
})
for (var keyName in obj) {
if (keyName == kValue) {
return obj[keyName];
// break;
}
}
}
let userId = getUrlValue('userId');
let token = getUrlValue('token');
H5 给安卓/ios 通信
请求一些接口后,接口返回 token 无效/过期之类的或者已经申请成功了,这时候需要 H5 把接口返回的信息发给安卓/ios
// 与安卓或者IOS交互
function signalCommunication(isMsg, content) {//给安卓/IOS传消息msg=true,传错误码msg=false
let u = navigator.userAgent;
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //g
let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isAndroid) { // 调用原生app的函数
if (isMsg) {//传消息
window.android.clickOnAndroid(content);
} else {//传错误码
window.android.onRequestError(content);
}
}
if (isIOS) {
if (isMsg) {//传消息
window.webkit.messageHandlers.goBackVC.postMessage({
'goBackVC': 'fromHallMaster',
});
} else {//传错误码
window.webkit.messageHandlers.requestErrorAction.postMessage({
'errCode': content.errCode,
'errMsg': content.errMsg
});
}
}
}
转载自:https://juejin.cn/post/6871148860647931918