diff --git a/site/docs/api.md b/site/docs/api.md
index 8da5610..96c0c56 100644
--- a/site/docs/api.md
+++ b/site/docs/api.md
@@ -10,7 +10,7 @@ type: 开发指南
#### downloadRootDir
-下载的根目录。你可以使用 react-native-fs 等第三方组件检查其中的内容。
+下载的根目录。你可以使用`react-native-fs`等第三方组件读取其中的内容。
---
@@ -46,27 +46,27 @@ type: 开发指南
1. `{expired: true}`:该应用原生包版本被设置为过期(或已从 pushy 服务器中删除,或从未上传),需要前往应用市场下载新的版本(在设置中填写 downloadUrl)。
-```
- {
- expired: true,
- downloadUrl: 'http://appstore/downloadUrl',
- }
+```js
+{
+ expired: true,
+ downloadUrl: 'http://appstore/downloadUrl',
+}
```
2. `{upToDate: true}`:当前已经更新到最新,无需进行更新。
3. `{update: true}`:当前有新版本可以更新。info 的`name`、`description`字段可以用于提示用户,而`metaInfo`字段则可以根据你的需求自定义一些标记(如是否静默更新、是否强制更新等等,自己根据标记的属性做一些条件流程控制),具体用法可参考[场景实践](bestpractice.html#%E5%85%83%E4%BF%A1%E6%81%AFmeta-info%E7%9A%84%E4%BD%BF%E7%94%A8)。另外还有几个字段,包含了热更新文件的下载地址,
-```
- {
- update: true,
- name: '1.0.3-rc',
- hash: 'hash',
- description: '添加聊天功能\n修复商城页面BUG',
- metaInfo: '{"silent":true}',
- pdiffUrl: 'http://update-packages.reactnative.cn/hash',
- diffUrl: 'http://update-packages.reactnative.cn/hash',
- }
+```js
+{
+ update: true,
+ name: '1.0.3-rc',
+ hash: 'hash',
+ description: '添加聊天功能\n修复商城页面BUG',
+ metaInfo: '{"silent":true}',
+ pdiffUrl: 'http://update-packages.reactnative.cn/hash',
+ diffUrl: 'http://update-packages.reactnative.cn/hash',
+}
```
---
@@ -96,6 +96,17 @@ const hash = await downloadUpdate(
下载更新的 apk 包并直接安装。`url`必须为可直接下载到 apk 文件的地址,`onDownloadProgress`为可选的下载进度回调函数,可根据回调参数自行设计进度的展示。自`v5.9.0`版本起可用。
+注意从`v9.1.0`版本起,要使用这个功能需要在`AndroidManifest.xml`中手动添加安装权限,如果需要考虑 Android 7.0 以下的客户,则还需要添加外部存储权限。
+
+```xml
+
+
+
+
+```
+
+注意某些应用市场可能会因为上述权限拒绝应用上架。去掉上述两个权限并不影响热更新功能。
+
---
#### function markSuccess()
@@ -110,12 +121,12 @@ const hash = await downloadUpdate(
返回值示例:
-```
- {
- name: '1.0.3-rc',
- description: '添加聊天功能\n修复商城页面BUG',
- metaInfo: '{"silent":true}',
- }
+```js
+{
+ name: '1.0.3-rc',
+ description: '添加聊天功能\n修复商城页面BUG',
+ metaInfo: '{"silent":true}',
+}
```
---
@@ -132,6 +143,49 @@ const hash = await downloadUpdate(
---
+#### function simpleUpdate(App: ComponentType, { appKey: string; onPushyEvents?: ({ type: EventType; data: EventData }) => void })
+
+极简热更新集成,示例请见[集成文档](/docs/integration.html#极简快速集成),其中`onPushyEvents`参数请看下面的方法说明。
+
+---
+
+#### function onPushyEvents(({ type: EventType; data: EventData }) => void)
+
+发生某个事件时的回调,可用于上报统计数据。自`v8.4.0`版本后可用。其中回调参数构型具体如下:
+
+```ts
+// 回调事件类型
+export type EventType =
+ | 'rollback' // 回滚
+ | 'errorChecking' // 查询热更时出错
+ | 'checking' // 正在查询热更
+ | 'downloading' // 正在下载热更
+ | 'errorUpdate' // 热更时出错
+ | 'markSuccess' // 热更后成功标记
+ | 'downloadingApk' // 正在下载apk
+ | 'rejectStoragePermission' // 下载apk前申请存储权限被用户拒绝
+ | 'errorStoragePermission' // 下载apk前申请存储权限出错
+ | 'errowDownloadAndInstallApk'; // 下载或安装apk时出错
+
+// 回调事件数据
+export interface EventData {
+ currentVersion: string; // 当前版本hash
+ cInfo: {
+ pushy: string; // 当前pushy版本
+ rn: string; // 当前rn版本
+ os: string; // 当前操作系统及版本
+ uuid: string; // 用户标识符
+ };
+ packageVersion: string; // 原生包版本
+ buildTime: number; // 原生包编译时间戳
+ message?: string; // 相关说明信息
+ rolledBackVersion?: string; // 热更失败,回滚后的版本hash
+ newVersion?: string; // 已下载但热更失败的hash
+}
+```
+
+---
+
### Android 方法
#### UpdateContext.setCustomInstanceManager(ReactInstanceManager instanceManager)
@@ -149,7 +203,3 @@ mReactInstanceManager = ReactInstanceManager.builder()
.build();
UpdateContext.setCustomInstanceManager(mReactInstanceManager);
```
-
-### iOS 方法
-
-待补充
diff --git a/site/docs/integration.md b/site/docs/integration.md
index effecbe..3839606 100644
--- a/site/docs/integration.md
+++ b/site/docs/integration.md
@@ -21,7 +21,13 @@ class App extends Component {
}
// 对根组件使用simpleUpdate方法封装后导出
-export default simpleUpdate(App, { appKey });
+export default simpleUpdate(App, {
+ appKey,
+ onPushyEvents: ({ type, data }) => {
+ // 热更成功或报错的事件回调
+ // 可上报自有或第三方数据统计服务
+ },
+});
```
此方式默认在 App 启动,以及从后台切换到前台时触发更新检查,弹出提示的内容也固定。如需自定义触发时机,以及修改界面提示等,请参考下面的自定义集成方式。
@@ -104,10 +110,15 @@ import {
switchVersionLater,
markSuccess,
downloadAndInstallApk,
+ onPushyEvents,
} from 'react-native-update';
import _updateConfig from './update.json';
const { appKey } = _updateConfig[Platform.OS];
+onPushyEvents(({ type, data }) => {
+ // 热更成功或报错的事件回调
+ // 可上报自有或第三方数据统计服务
+});
export default class MyProject extends Component {
state = {