鸿蒙 应用市场更新功能:版本检测与更新提醒

在应用开发中,版本更新是一个常见需求。应用市场更新功能为已上架应用提供版本检测、显示更新提醒能力,可以在应用内提醒用户及时更新到最新版本。

一、场景

当应用启动完成或用户在应用中主动检查应用新版本时,可以通过本服务来查询应用是否有可更新的版本。如果存在可更新版本,可以通过本服务为用户显示更新提醒。

二、版本支持

限制项 说明
设备支持 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
        });
    }
}
相关推荐
祭曦念7 小时前
【共创季稿事节】HarmonyOS NEXT 纯百分比布局实战:RelativeContainer + alignRules 多屏适配完全指南
华为·harmonyos
风华圆舞7 小时前
在 Flutter 鸿蒙项目里接入文本转语音的完整思路
flutter·华为·harmonyos
不羁的木木7 小时前
HarmonyOS AI开发提效工具:DevEco Code & DevEco CLI - 跨设备调试与AI应用部署
人工智能·华为·harmonyos·鸿蒙
金启攻8 小时前
【鸿蒙原生应用开发实战】第一篇:项目搭建与首页开发 — 从零构建“宇宙探索“App
harmonyos
坚果派·白晓明8 小时前
鸿蒙 PC应用集成 hwloc:3 大 NAPI & 编译坑详解
c语言·华为·ai编程·harmonyos·atomcode
不羁的木木9 小时前
HarmonyOS AI开发提效工具:DevEco Code & DevEco CLI - AOT编译加速AI应用启动
harmonyos·鸿蒙
木咺吟9 小时前
鸿蒙原生应用实战(三):塔罗牌App开发 — 牌阵解读与交互设计
harmonyos
不喝水就会渴9 小时前
HarmonyOS惰性加载性能优化技术详解(喵屿项目案例)
华为·性能优化·harmonyos
轻口味9 小时前
轻规划鸿蒙开发实战9:对接 Agent Framework Kit,用小艺智能体实现愿景项目体检与自动可行性打分
华为·harmonyos
祭曦念10 小时前
【共创季稿事节】鸿蒙原生 ArkTS 布局精讲:foregroundColor 前景色统一着色
华为·harmonyos