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…