DSBridge是目前地球上使用最简单并且支持同步调用的跨平台(IOS/Android) javascript bridge. 自1.0发布之后,获得了大量的反馈和支持,为使DSBridge更易用、更强大,进行2.0版本升级。
项目地址
github.com/wendux/DSBr… (Android)
github.com/wendux/DSBr… (IOS)
更新记录
废弃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"});
支持多次返回
试想这样一个场景,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进度
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…