在应用开发中,版本更新是一个常见需求。应用市场更新功能为已上架应用提供版本检测、显示更新提醒能力,可以在应用内提醒用户及时更新到最新版本。
一、场景
当应用启动完成或用户在应用中主动检查应用新版本时,可以通过本服务来查询应用是否有可更新的版本。如果存在可更新版本,可以通过本服务为用户显示更新提醒。
二、版本支持
| 限制项 | 说明 |
|---|---|
| 设备支持 | Phone、Tablet、PC/2in1、TV(19+)、Wearable(20+) |
| 模拟器 | 不支持(请使用真机调试,模拟器会提示"无法获取内容,请点击屏幕重试") |
| 应用上架 | 应用必须在应用市场已上架 |
三、核心接口
| 接口 | 描述 |
|---|---|
checkAppUpdate(context) |
检查更新接口,用于检测当前是否有新版本,返回Promise<CheckUpdateResult> |
showUpdateDialog(context) |
显示升级对话框接口,用于提示用户进行升级,返回Promise<ShowUpdateResultCode> |
四、开发步骤
4.1 检测应用新版本
步骤1:导入模块
import { updateManager } from '@kit.AppGalleryKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import type { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
步骤2:构造Context参数
let context: common.UIAbilityContext =
this.getUIContext().getHostContext() as common.UIAbilityContext;
步骤3:调用checkAppUpdate检查更新
try {
updateManager.checkAppUpdate(context)
.then((checkResult: updateManager.CheckUpdateResult) => {
hilog.info(0, 'TAG', "Succeeded in checking Result updateAvailable:" + checkResult.updateAvailable);
})
.catch((error: BusinessError) => {
hilog.error(0, 'TAG', `checkAppUpdate error: ${error.code}, message: ${error.message}`);
});
} catch (error) {
hilog.error(0, 'TAG', `checkAppUpdate error: ${error.code}, message: ${error.message}`);
}
检测条件说明:
| 条件 | 要求 |
|---|---|
| 版本要求 | 本地安装版本须低于应用市场在架版本 |
| 签名要求 | 本地安装版本须和应用市场在架版本签名信息保持一致 |
| 测试类型 | 暂不支持邀请测试和公开测试 |
4.2 显示升级对话框
步骤1:导入模块
import { updateManager } from '@kit.AppGalleryKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import type { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
步骤2:构造Context参数
let context: common.UIAbilityContext =
this.getUIContext().getHostContext() as common.UIAbilityContext;
步骤3:调用showUpdateDialog显示升级对话框
try {
updateManager.showUpdateDialog(context)
.then((resultCode: updateManager.ShowUpdateResultCode) => {
hilog.info(0, 'TAG', "Succeeded in showing UpdateDialog resultCode:" + resultCode);
})
.catch((error: BusinessError) => {
hilog.error(0, 'TAG', `showUpdateDialog error: ${error.code}, message: ${error.message}`);
});
} catch (error) {
hilog.error(0, 'TAG', `showUpdateDialog error: ${error.code}, message: ${error.message}`);
}
五、完整代码
import { updateManager } from '@kit.AppGalleryKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import type { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct Index {
private context: common.UIAbilityContext =
this.getUIContext().getHostContext() as common.UIAbilityContext;
build() {
Column() {
Button('检查更新')
.onClick(() => {
this.checkUpdate();
})
.margin(10)
Button('显示升级对话框')
.onClick(() => {
this.showUpdateDialog();
})
.margin(10)
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Center)
}
// 检查应用新版本
private checkUpdate(): void {
try {
updateManager.checkAppUpdate(this.context)
.then((checkResult: updateManager.CheckUpdateResult) => {
if (checkResult.updateAvailable) {
hilog.info(0, 'TAG', '有新版本可用');
// 有新版本,可以调用showUpdateDialog显示更新提醒
this.showUpdateDialog();
} else {
hilog.info(0, 'TAG', '当前已是最新版本');
this.showToast('当前已是最新版本');
}
})
.catch((error: BusinessError) => {
hilog.error(0, 'TAG', `checkAppUpdate error: ${error.code}, ${error.message}`);
this.showToast('检查更新失败');
});
} catch (error) {
hilog.error(0, 'TAG', `checkAppUpdate error: ${error.code}, ${error.message}`);
this.showToast('检查更新失败');
}
}
// 显示升级对话框
private showUpdateDialog(): void {
try {
updateManager.showUpdateDialog(this.context)
.then((resultCode: updateManager.ShowUpdateResultCode) => {
hilog.info(0, 'TAG', `showUpdateDialog resultCode: ${resultCode}`);
})
.catch((error: BusinessError) => {
hilog.error(0, 'TAG', `showUpdateDialog error: ${error.code}, ${error.message}`);
this.showToast('显示更新提醒失败');
});
} catch (error) {
hilog.error(0, 'TAG', `showUpdateDialog error: ${error.code}, ${error.message}`);
this.showToast('显示更新提醒失败');
}
}
private showToast(msg: string) {
this.getUIContext().getPromptAction().showToast({
message: msg,
duration: 2000
});
}
}