# 阻断式更新

如果希望在用户使用元服务过程中进行版本更新，可以使用阻断式更新的方式进行更新。使用[监听元服务更新检查接口](https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-updatemanager#updatemanageroncheckforupdate)，然后在[监听元服务新版本下载完成事件接口](https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-updatemanager#updatemanageronupdateready)的回调函数中调用[重启元服务接口](https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-updatemanager#updatemanagerapplyupdate)的方式触发更新。
> 注意
>
> 阻断式更新接口依赖手机rom版本，从HarmonyOS 6.0.0(20)开始支持。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/78/v3/eM-pF9JXSJqZQYXMZF68Fg/zh-cn_image_0000002724718192.png?HW-CC-KV=V1&HW-CC-Date=20260911T021901Z&HW-CC-Expire=31536000000&HW-CC-Sign=AC4E0C77C366EA3282AC836C62945AD882E6CF04C3D087990A67AB98479B380B "点击放大")

1. 开发者通过[has.getUpdateManager](https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-updatemanager#hasgetupdatemanager)接口获取全局唯一的版本更新管理器对象。

2. 开发者通过[UpdateManager.onCheckForUpdate](https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-updatemanager#updatemanageroncheckforupdate)接口检查元服务是否有可用更新。

3. 如果元服务有可用更新，应用市场将会回调通知给开发者，并尝试下载最新的元服务包。

4. 开发者通过[UpdateManager.onUpdateReady](https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-updatemanager#updatemanageronupdateready)接口检查元服务包是否下载完成，下载完成后会触发回调函数。

5. 元服务包下载完成后，需要实现弹窗明确提醒用户是否要进行升级。

6. 如果用户在弹窗中选择升级，开发者可以调用[UpdateManager.applyUpdate](https://developer.huawei.com/consumer/cn/doc/atomic-ascf/apis-updatemanager#updatemanagerapplyupdate)方法重启元服务。系统将对元服务进行免安装更新，并在更新成功后以新版本打开元服务。

   如果用户在弹窗中选择不升级，则元服务仍然以旧版本元服务包运行。

> 注意
>
> * 在调用检查更新接口后，元服务包下载完成时，需要开发者自行进行弹窗，提示用户选择是否进行更新。
>
> * 弹窗内容标题需要为"更新提示"。
>
> * 只有用户在更新弹窗中选择确认更新，才可以进行更新操作。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ac/v3/29mmt5Z6RQul4Jfznz32TQ/zh-cn_image_0000002754437977.png?HW-CC-KV=V1&HW-CC-Date=20260911T021901Z&HW-CC-Expire=31536000000&HW-CC-Sign=54747F4B3A857284F0203AC080609DB4B0E806E461820DA557ACF32F4229C0F1 "点击放大")

```js
const updateManager = has.getUpdateManager();
updateManager.onCheckForUpdate(res => {
  console.info('是否有新版本', res.hasUpdate);
});
updateManager.onUpdateReady(() => {
  has.showModal({
    title: '更新提示',
    content: '新版本已准备就绪，是否立即重启？',
    confirmText: '立即重启',
    success: (res) => {
      if (res.confirm) {
        updateManager.applyUpdate();
      }
    }
  });
});
```

> 说明
>
> * 使用阻断式更新需要先实现明示用户是否选择更新的弹窗，依据用户选择进行强制更新。
>
> * 监听元服务更新接口，同一设备元服务的调用次数不超过6次/天、每30分钟调用次数不超过1次。

