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

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

一、场景

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

二、版本支持

限制项 说明
设备支持 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
        });
    }
}
相关推荐
xmdy58661 小时前
Flutter+开源鸿蒙实战|智安盾电商溯源平台Day2 首页+核心入口UI开发(鸿蒙多端适配)
flutter·开源·harmonyos
nashane5 小时前
HarmonyOS 6学习:HAR包与HSP包的选择与优化指南
学习·华为·harmonyos·harmonyos 5
全栈若城5 小时前
自定义 TabBar 实战:浮动标签栏与舵式标签栏
harmonyos·harmonyos6·三方库开发
maaath6 小时前
【maaath】Flutter for OpenHarmony 学习答题应用实战开发
学习·flutter·华为·harmonyos
李游Leo6 小时前
别再拼 JSON 了:HarmonyOS UDMF 跨应用数据流转实践
harmonyos
maaath6 小时前
【maaath】Flutter for OpenHarmony 实战:记账理财应用开发指南
flutter·华为·harmonyos
key_3_feng6 小时前
鸿蒙6.0地图导航应用(可集成到其他APP)开发方案
华为·harmonyos
UnicornDev6 小时前
【HarmonyOS 6】底部悬浮导航的沉浸光感适配(API23)
华为·harmonyos·arkts·鸿蒙·鸿蒙系统
轻口味6 小时前
HarmonyOS 6 轻相机应用开发5:实时自动戴眼镜功能实现
数码相机·华为·harmonyos