|
| 1 | +# FEATURE |
| 2 | + |
| 3 | +#### :heavy_check_mark: JavaScript调用Java功能 |
| 4 | + |
| 5 | +**支持同步和异步两种方式的调用(目前仅开放异步调用,但实现原理本身支持同步调用)** |
| 6 | + |
| 7 | +要使用这个功能,总共以下几个步骤: |
| 8 | + |
| 9 | +1. 业务的JavaScript代码监听Bridge的注入完成事件`WebViewJavascriptBridgeReady`; |
| 10 | +2. 使用步骤1注入的`easyBridge`对象(对象名字支持自定义)的`callHandler(handlerName, args, callback)`函数调用Java代码。 |
| 11 | + |
| 12 | +**请根据业务需要定义JavaScript与Java的通讯协议** |
| 13 | + |
| 14 | +#### :heavy_check_mark: Java调用JavaScript功能 |
| 15 | + |
| 16 | +可以在Java代码中调用注册在EasyBridge上的JavaScript函数,步骤如下: |
| 17 | + |
| 18 | +1. 业务的JavaScript代码监听Bridge的注入完成事件`WebViewJavascriptBridgeReady`; |
| 19 | +2. 使用步骤1注入的`easyBridge`对象(对象名字支持自定义)的`registerHandler(handlerName, handler)`方法,注册可供Java调用的方法; |
| 20 | +3. 在Java层,调用EasyBridge的`EasyBridgeWebView`实例的`callHandler(handlerName,parameters,resultCallBack)`方法,JavaScript的执行结果会通过第三个参数回调返回。 |
| 21 | + |
| 22 | +**请根据业务需要定义JavaScript与Java的通讯协议** |
| 23 | + |
| 24 | +#### :heavy_check_mark: 全局的安全控制策略 |
| 25 | + |
| 26 | +EasyBridge提供两种安全检查策略。其中全局的安全检查在EasyBridge的内部发生在以下两个时机: |
| 27 | + |
| 28 | +* **Java注入Bridge通讯桥的时候.** |
| 29 | + |
| 30 | + 如果被安全检查禁止,则不会在页面中注入bridge对象,即无法访问Java中的方法 |
| 31 | + |
| 32 | +* **JavaScript调用具体的Java接口的时候.** |
| 33 | + |
| 34 | + 如果被安全检查禁止,则不会触发下面的接口粒度的安全检查也无法访问Java中的方法 |
| 35 | + |
| 36 | +要使用全局的安全控制策略,步骤如下: |
| 37 | + |
| 38 | +1. 调用EasyBridge的`EasyBridgeWebView`实例的`setPolicyChecker(policyChecker)`方法设置全局安全检查对象实例; |
| 39 | +2. 需要在其他时机触发全局的安全检查请调用`checkSecurityGlobally(url,parameters)`方法 |
| 40 | + |
| 41 | +#### :heavy_check_mark: 基于接口粒度的安全控制策略 |
| 42 | + |
| 43 | +接口粒度的安全检查是在执行对应的Java方法之前的最后一个检查点。要使用接口粒度的安全检查,步骤如下: |
| 44 | + |
| 45 | +1. 构造对应的`BridgeHandler`接口对象实例 |
| 46 | +2. 实现对应的`SecurityPolicyChecker`实例,并提供给步骤1的接口实例 |
| 47 | + |
1 | 48 | # EasyBridge |
2 | 49 |
|
3 | 50 | [EasyBridge](https://github.com/easilycoder/EasyBridge)是一个简单易用的js-bridge的工具库,提供了日常开发中,JavaScript与Java之间通讯的能力,与其他常见的js-bridge工具库实现方案不同,**EasyBridge**具备以下几个特点: |
|
0 commit comments