dsbridge 概览
# dsbridge
- android github 官网 https://github.com/wendux/DSBridge-Android (opens new window)
- IOS github 官网 https://github.com/wendux/DSBridge-IOS (opens new window)
# 简介
DSBridge 是 H5 页面与 Native 之间通信的桥梁,它有如下特点:
跨平台;同时支持 ios 和 android。
双向调用;js 可以调用 native, native 可以调用 js
不仅支持异步调用,而且页支持同步调用(dsbridge 是唯一一个支持同步调用的 javascript bridge)
支持进度回调,多次返回(常用于文件下载进度、计时器等)
Android 支持腾讯 x5 内核
三端易用;无论是前端还是 android 或 ios,使用都非常简单,极大的降低集成/学习成本
# Javascript API 方法
bridge.call(method,[args,callback])
功能:调用 Native api
method: api 函数名
args:参数,类型:json, 可选参数
callback(String returnValue):仅调用异步 api 时需要.
(1) 同步调用 支持同步是 DSBridge 的最大亮点之一。
(2) 异步调用
此时你需要传一个回调(如果没有参数,回调可作为第二个参数),当 api 完成时回调将会被调用,结果以字符串的形式传递。
dsBridge.register(methodName,function)
注册 javascript API 供 Native 调用
注意点:为了兼容 Android 和 IOS ,DSBridge 对 Native API 的签名有两个要求
返回值必须是 String, 如果没有返回值,直接返回 null 就行
API 的参数通过 JSONObject 传递,如果有些 API 没有参数,你也需要申明。
# Android 通过 DWebview 调用 JS 代码
- void callHandler(String method, Object[] args)
作用:用于调用没有返回值的 js 函数,没有参数时传 null 即可
- void callHandler(String method, Object[] args, CompletionHandler handler)
作用:用于需要返回值的场景,需要传递一个 CompletionHandler 接口对象,在 complete(String returnValue)方法中处理返回值即可。
- void evaluateJavascript(String script)
作用:用于执行任意 js 代码,内部已做版本兼容处理。
# dsbridge 原理
# dsbridge 和 jsbridge 区别
- 同步/异步支持
DSBridge 支持同步/异步调用
jsbridge 只支持异步调用方式
# DSBridge vs WebViewJavascriptBridge
- 平台支持
DSBridge 跨平台,同时支持 ios/android/osx
WebViewJavascriptBridge 并不支持 android,支持 ios/osx
- 易用性
DSBridge(ios 、android 和前端)三端易用
WebViewJavascriptBridge 用法比较繁琐
- 同步/异步支持
DSBridge 支持同步/异步调用
WebViewJavascriptBridge 前端只支持异步调用方式
https://www.jianshu.com/p/d967b0d85b97 (opens new window)