HarmonyOS 鸿蒙Next应用内检测新版本并提示终端用户更新app的功能

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next应用内检测新版本并提示终端用户更新app的功能 已找到指导文档,帮忙验证一下并提供具体代码 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/store-update-V5#section4267151120239

3 回复

应用内检测升级:终端用户启动应用时,应用市场检测到该应用有新版本会通知终端用户,可以到应用市场进行应用的下载更新。

但实际上应用程序包的更新最终都是到应用市场进行应用的下载更新,无法实现在应用内进行更新。

import { updateManager } from '@kit.StoreKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import type { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { Want } from '@ohos.app.ability.Want';
import { bundleManager } from '@kit.AbilityKit';

let context: common.UIAbilityContext = getContext() as common.UIAbilityContext;

let bundleInfo: bundleManager.BundleInfo = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION);

@Entry
@Component
struct AppPage {
  @State message: string = 'Hello World';

  build() {
    RelativeContainer() {
      Text(this.message)
        .id('AppPageHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
      Button('app').onClick(() => {
        try {
          updateManager.checkAppUpdate(context)
            .then((checkResult: updateManager.CheckUpdateResult) => {
              hilog.info(0, 'TAG', "Succeeded in checking Result updateAvailable==检查到新版本:" + checkResult.updateAvailable);
              updateManager.showUpdateDialog(context)
                .then((resultCode: updateManager.ShowUpdateResultCode) => {
                  hilog.info(0, 'TAG', "Succeeded 显示升级对话框:" + resultCode);
                  //应用内无法更新,需要用应用市场下载,拉起应用市场
                  const want: Want = {
                    // 指定appid
                    //uri: `store://appgallery.huawei.com/app/detail?id=${appId}`
                    // 打开应用商店
                    uri: `store://appgallery.huawei.com/app`
                  };
                  const context = getContext(this) as common.UIAbilityContext;
                  context.startAbility(want).then(() =>{
                    //拉起成功
                  }).catch(() =>{
                    // 拉起失败
                  });
                })
                .catch((error: BusinessError) => {
                  hilog.error(0, 'TAG', `显示升级对话框 onError.code is ${error.code}, message is ${error.message}`);
                });
            })
            .catch((error: BusinessError) => {
              hilog.error(0, 'TAG', `检查到新版本 onError.code is ${error.code}, message is ${error.message}`);
            });
        } catch (error) {
          hilog.error(0, 'TAG', `checkAppUpdate onError.code is ${error.code}, message is ${error.message}`);
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next应用内检测新版本并提示终端用户更新app的功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


为啥updateManager.checkAppUpdate(context)的返回结果一直是0,

在HarmonyOS(鸿蒙)系统中,实现应用内检测新版本并提示终端用户更新App的功能,可以通过以下方式实现:

首先,开发者需要在服务器端维护一个版本信息接口,该接口返回当前最新版本号以及下载地址等信息。应用启动时或定期向该接口发送请求,获取最新版本信息并与当前应用版本进行对比。

若检测到有新版本,应用可通过弹窗、通知栏提示等方式告知用户有新版本可用,并引导用户进行更新。更新过程可以是通过下载APK文件并提示用户安装,或者是通过鸿蒙系统的应用内分发能力进行无缝更新(如果鸿蒙支持此类功能,需根据鸿蒙官方文档实现)。

在实现过程中,需确保版本检测逻辑的稳定性和准确性,避免因网络问题或服务器故障导致误判。同时,更新提示需考虑用户体验,避免频繁打扰用户。

此外,开发者需遵循鸿蒙系统的应用更新策略和安全要求,确保更新过程的合法性和安全性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部