YN项目客户端交互

2017-09-23  本文已影响0人  wali_lilingyun

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对象,实现了两种场景的交换:

//安卓客户端点击返回按钮        
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

/**
     * 请求调用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"});
上一篇 下一篇

猜你喜欢

热点阅读