🌍上最好用的js bridge -DSBridge2.0更新了!

5,056 阅读2分钟

DSBridge是目前地球上使用最简单并且支持同步调用的跨平台(IOS/Android) javascript bridge. 自1.0发布之后,获得了大量的反馈和支持,为使DSBridge更易用、更强大,进行2.0版本升级。

项目地址

github.com/wendux/DSBr… (Android)

github.com/wendux/DSBr… (IOS)

更新记录

  1. 废弃getJsBridge方法,提供内置对象dsBridge;

    在1.0中调用Native方法的步骤如下:

    var bridge = getJsBridge();//获取bridge
    var str=bridge.call("testSyn", {msg: "testSyn"}); //通过bridge对象调用native方法

    在2.0中可以直接使用dsBridge对象一步到位:

    var str=dsBridge.call("testSyn", {msg: "testSyn"});
  2. 支持多次返回

    试想这样一个场景,native提供下载文件能力,js在调用native下载模块式需要显示下载进度到网页上。

    在1.0中实现方式大概如下:

    var bridge = getJsBridge();//获取bridge
    //启动下载
    var str=bridge.call("download", {url: "xxx"},function(result){
      //下载结束
    });
    
    //注册一个全局函数,每当native有新进度消息时通过callHandler调用
    window.onDownloadProgress=function(progress){
      //更新显示进度
    }

    可以看到,处理下载进度的只能通过注册一个js回调,然后当进度更新时,通过native不停的调用这个js回调, 而这种方法显然有点绕,优雅的处理方式应该是下面这个样子:

    var str=dsBridge.call("download", {url: "xxx"},function(result){
      if(result.status==0){
         //下载结束
      }else{
        setProgress(result.progress) //未结束,更新进度
      }
    });

    对,2.0中你就可以这么做!需要natvie简单配合(多次返回数据),具体的示例请参考demo中“多次回调” callProgress的示例或点此 DSBridge实例-在网页中展示Native进度

  3. JS API注册标准化

    1.0中供Native调用的js 函数只需要声明为全局函数即可,而无需注册;但是,在2.0中,为了减少避免js全局命名冲突和使js api注册更明确,我们提供了一个有仪式感的注册接口register:

    JS中定义一个加法函数供Native调用:

     dsBridge.register('addValue',function(r,l){
             return r+l;
     })

使用

使用方法见github项目主页,源码附有示例,供开发者参考。

最后

如果你喜欢,欢迎去github star一下,顶一下哦,多谢支持! github.com/wendux/DSBr…
github.com/wendux/DSBr…