美文网首页
YN项目客户端交互

YN项目客户端交互

作者: wali_lilingyun | 来源:发表于2017-09-23 17:30 被阅读0次

    jsb.js

    实现js和客户端互相调用方法
    客户端会给js提供一个名为JavascriptBridge变量

    var API_NAMESPACE = '__JavascriptBridge__';
    var API = window[API_NAMESPACE] || null;
    

    JS中使用到的方法:(前端并不是很清楚这些方法具体做了什么)
    API.require
    API.setResult
    API.getCommands
    API.getUserInfoCallback
    API.setJpushAlias
    API.getZuid()

    依赖于此API对象,实现了两种场景的交换:

      1. 给java调用的js方法
        例子:
    //安卓客户端点击返回按钮        
    native_android.jsb.addJavascriptMethod('backButtonCallback',function(message){
                if(message) {
                    if(Object.prototype.toString.call(message)==="[object String]"){
                        message=JSON.parse(message);
                    }
                    if(message.page == "loading"){
                        com.jumpUrl("/bill?footer=1");
                    }else if(message.page == "result"){
                        com.jumpUrl("/bill?footer=1");
                    }
                }
            })
    

    目前看到以下几个定义的js方法
    shareCallback
    statisticsCallback
    backButtonCallback
    alipayFailCallBack

      1. 调用java方法
        定义了require方法供js调用,核心还是依靠api.require
    /**
         * 请求调用java方法
         * @param  {[type]}   cmd      [description]
         * @param  {[type]}   params   [description]
         * @param  {Function} callback [description]
         * @return {[type]}
         */
        context.require = function(cmd, params, callback){
            params = params || '{}';
            var result = api.require(cmd, JSON.stringify(params));
            if(callback && result){
                result = JSON.parse(result);
            }
            callback && callback(result);
        }
    

    js具体调用

    • 主体项目只看到这两种类型
    native_android.jsb.require('messagebox', {{type: "title", url_title:'***', need_back: true, hideMenu: true}})
    native_android.jsb.require('messagebox', {type:"relogin"});
      
    
    • 授信项目有额外
    //印尼通知客户端开启用户权限
    native_android.jsb.require('messagebox', {type:"openAuthority"});
    //印尼通知客户端获取用户权限
    native_android.jsb.require('messagebox', {type:"getAuthority"});
    

    相关文章

      网友评论

          本文标题:YN项目客户端交互

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