hybrid混合开发之“一知半解”(下)

话不多说直接奔入主题,了解了使用hybrid的原因,以及更新上线流程,我们在这里再说一下 js 如何与客户端通信。。

schema协议

使用:NgariHealth://直接打开纳里健康 app

内置上线

  • 将封装的schema 协议打包,内置到客户端
  • 客户端每次启动 wenview,都默认执行打包好的 invoke.js
  • 本地加载,免去网络加载的时间,更快
  • 本地加载,没有网络请求,黑客看不到 schema 协议,更加安全
  • 通讯的基本形式:调用能力,传递参数,监听回调
void function (window, undefined) {
    //调用 schema 协议
    function _invoke(action, data, callback) {
        //拼接 schema 协议
        var schema = 'myapp://utils/' + action
        //拼接参数
        schema += '?a=a';
        for (const key in data) {
            if (data.hasOwnProperty(key)) {
                const element = data[key];
                schema += '&' + key + '=' + element;

            }
        }
        // 处理 callback
        var callbackName = '';
        if (typeof callback === 'string') {
            callbackName = callback;
        } else {
            callbackName = action + Date.now();
            window[callbackName] = callback;
        }

        schema += 'callback=' + callbackName;

        var iframe = document.createElement('iframe');
        iframe.src = schema;
        var body = document.body;
        body.appendChild(iframe);
        setTimeout(()=>{
            body.removeChild(iframe);
            iframe = null;
        })
    }
    //暴露到全局变量
    window.invoke = {
        share: function (data, callback) {
            _invoke('share', data, callback);
        },
        scan: function (data, callback) {
            _invoke('share', data, callback);
        },
        login: function (data, callback) {
            _invoke('share', data, callback);
        },
    }
}(window)

总结

  • 通讯的基本形式:调用能力,传递参数,监听回调
  • 调用schema 代码的封装
  • 内置上线,更快,更安全

转载于:https://www.cnblogs.com/D-Y-W/p/10576773.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值