likes
comments
collection
share

H5 与安卓/IOS 通信H5 与安卓/IOS 通信安卓/ios 给 H5 通信H5 给安卓/ios 通信本文使用 md

作者站长头像
站长
· 阅读数 22

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
评论
请登录