如果希望在用户使用元服务过程中进行版本更新,可以使用阻断式更新的方式进行更新。使用监听元服务更新检查接口,然后在监听元服务新版本下载完成事件接口的回调函数中调用重启元服务接口的方式触发更新。
阻断式更新接口依赖手机rom版本,从HarmonyOS 6.0.0(20)开始支持。

开发者通过has.getUpdateManager接口获取全局唯一的版本更新管理器对象。
开发者通过UpdateManager.onCheckForUpdate接口检查元服务是否有可用更新。
开发者通过UpdateManager.onUpdateReady接口检查元服务包是否下载完成,下载完成后会触发回调函数。
如果用户在弹窗中选择升级,开发者可以调用UpdateManager.applyUpdate方法重启元服务。系统将对元服务进行免安装更新,并在更新成功后以新版本打开元服务。
如果用户在弹窗中选择不升级,则元服务仍然以旧版本元服务包运行。

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();
}
}
});
});