Skip to content

Commit deb75f0

Browse files
author
hongjingjun
committed
增加接口描述和安全策略描述
1 parent 06fb86f commit deb75f0

2 files changed

Lines changed: 65 additions & 19 deletions

File tree

README.md

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,53 +11,99 @@ React native增量更新,支持多入口多业务。
1111

1212
## 安装和使用
1313

14-
#### iOS安装增量更新
14+
客户端与后台相对独立,可集成客户端增量更新模块,自己构建后台版本接口,也可采用我们后台框架搭建(暂时还未开源)。
15+
16+
#### 安装增量更新
1517

1618
工程根目录执行:
1719

1820
`npm install --save react-native-diff-update`
1921

2022
`react-native link react-native-diff-update`
2123

22-
打开工程可以看到`LLibraries``LDRNDiffUpdate`就是增量更新模块。
24+
打开工程可以看到`Libraries``LDRNDiffUpdate`就是增量更新模块。
2325

2426

25-
#### iOS使用
27+
#### iOS使用方式
2628

2729
首先进行相关配置,配置信息在`LDRNBundleList.m`文件中,核心设置有:
2830

29-
```
30-
appKey //应用唯一标识
31+
```json
32+
appKey //应用唯一标识
3133
rnVersion //当前工程使用的React Native版本
32-
originBundles //工程内置的业务bundle
33-
originBundlesHash //业务bundle的md5 (可选)
34+
originBundles //工程内置的业务bundle
35+
originBundlesHash //业务bundle的md5 (可选)
3436
entryJSName //bundle入口文件名称
35-
patchFileName //补丁bundle入口文件名称
37+
patchFileName //补丁bundle入口文件名称
3638
versionUrl //版本请求接口地址
3739
```
3840

39-
配置好信息后,在自己的需要加载bundle的`viewController`中引入头文件`#import "LDRNDiffUpdate.h"`,然后指定jsBundle文件名即可:
41+
配置好信息后,在自己的需要加载bundle的`viewController`中引入头文件`#import "LDRNDiffUpdate.h"`,然后指定jsBundle文件名即可(每个jsBundle代表一个独立的业务)
4042

4143
```OC
4244
NSURL *jsCodeLocation = [LDRNDiffUpdate jsBundleUrl:@"LDBusinessEntry"];
4345
```
4446

47+
#### android相关方式
48+
49+
在应用启动时启动RnModuleDiffUpdateService这个service,当应用关闭时请停止此service。
50+
51+
## 版本请求接口说明
52+
53+
每次启动app时,检测本地所有jsBundle是否有更新,如果有更新则根据下载条件浸没下载,再根据加载策略进行实时更新还是下次启动更新RN业务。也可以对有问题的jsBundle业务进行回滚操作。
54+
55+
```js
56+
接口名称[POST]:/RN/patchVersion
57+
58+
请求body:
59+
{
60+
appKey: "", //app唯一标识
61+
appVersion: "", //app当前版本
62+
rnVersion: "", //react native集成版本
63+
resBody: {
64+
"LDBizName1": "1.2", //业务名称: 版本号
65+
"LDBizName2": "1.1",
66+
......
67+
}
68+
}
69+
70+
相应body:
71+
72+
```json
73+
{
74+
retCode: '000000', //响应码:000000代表成功,其他代表失败
75+
retDesc: 'xxx', //失败原因描述
76+
rspBody: {
77+
patchs:[
78+
{
79+
"zipPath": "https://xx.xx.com/patchzip/LDBizModuleName1.zip", //下载路径
80+
"version": "1.3", //业务版本号
81+
"moduleName": "LDBizName1", //jsBundle名称
82+
"zipHash": "xxxxxx", //zip文件md5值
83+
"jsbundleHash": "xxxxxx", //差异合并后js文件md5值
84+
"downloadNow": "3", //0:总是下载, 1:wifi下载,2: 4g和wifi下载
85+
"uploadNow": "true", //true:即刻更新,false:下次启动更新
86+
"needGoBack": "false", //是否需要回退版本
87+
},
88+
89+
......
90+
]
91+
}
92+
}
4593
46-
#### android安装增量更新
47-
工程根目录执行:
94+
```
4895

49-
`npm install --save react-native-diff-update-android`
96+
## 安全策略
5097

51-
`react-native link react-native-diff-update-android`
98+
增量更新安全主要涉及到jsBundle,jsBundle只是js代码,虽然经过混淆处理,但依然是纯明文,虽然可以对js做加密处理,但这种行为不太明智。
5299

53-
#### android相关配置
54-
`在应用启动时启动RnModuleDiffUpdateService这个service,当应用关闭时请停止此service`
100+
主要考虑以下安全因素:
55101

56-
## 接口说明
102+
1. 网络接口安全。这点其实和增量更新关系不大,版本接口复用原有后台安全策略即可。
57103

58-
#### 版本请求接口
104+
2. jsBundle篡改安全。为防止篡改js入侵app业务,需对jsBundle做签名校验,一是下载文件后校验其完整性,二是每次加载jsBundle时校验,这样就防止了整条链路篡改风险。
59105

60-
## 安全
106+
3. jsBundle业务安全。因为jsBundle是明文,所以业务中需要进行加解密等敏感措施就不能在js侧实现,解决的办法是native实现加解密暴露给js接口调用。
61107

62108

63109

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-diff-update",
3-
"version": "1.0.0",
3+
"version": "1.0.1",
44
"description": "React native增量更新,支持多入口多业务。",
55
"main": "js/index.js",
66
"scripts": {

0 commit comments

Comments
 (0)