HarmonyOS 鸿蒙Next应用市场服务更新功能

HarmonyOS 鸿蒙Next应用市场服务更新功能 【问题描述】在调用showUpdateDialog的时候,发现没有用户点击取消更新的回调,还是说点击取消就直接退出应用?

还有我想确认下,这个版本检测的更新弹窗,我们可以自己实现吗?点击更新不会直接下载安装包,会直接跳转到应用市场的app页面

6 回复

开发中你好,可以自定义弹窗实现: 1、使用弹窗组件时,可优先考虑自定义弹窗,便于自定义弹窗的样式与内容。通过CustomDialogController类显示自定义弹窗,不支持直接在类中定义和使用。通常需要将弹框逻辑封装成Builder或其他组件,以便在需要时调用。 ​​2、实现应用升级自定义弹窗,可保持应用内弹窗样式的统一,或监控“立即更新”按钮。

操作步骤:

  • 调用updateManager.checkAppUpdate接口,检查到有更新。
  • 调用自定义的UI更新弹框CustomDialog
  • 用户点击自定义弹框里的“立即更新”按钮,调用productViewManager.loadProduct接口展示应用详情页,用户在应用详情页里更新应用。
  • 开发者结合自己的业务来监控“以后再说”或“立即更新”按钮,代码中是通过hilog输出日志体现。
  • 注意:采用这种自定义弹框,需要自己维护新版本的版本号、大小、更新详情描述信息。

更多关于HarmonyOS 鸿蒙Next应用市场服务更新功能的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


老师,我们采用这个方法之后出现一个问题:

应用内能检测到有新版本,也能正常拉起更新弹窗,点击同意更新后跳转到应用市场上时,应用市场的弹窗显示应用已下架,然后过一会就自动更新好了,这是为什么?

开发者你好:

  1. 弹窗显示应用已下架,请排查下调用接口productViewManager.loadProduct时,want对象中的bundleName参数是否填写正确;
  2. 过一会就自动更新好,请排查下应用市场是否开启了自动更新:应用市场-我的-设置-应用网络设置-自动更新应用。

updateManager.checkAppUpdate,检查是否有更新。

有更新就show自定义更新弹窗。

文档:updateManager(更新功能)-ArkTS API-AppGallery Kit(应用市场服务)

跳转到应用市场:productViewManager (应用市场推荐)-ArkTS API-AppGallery Kit(应用市场服务)

startAppGalleryDetail() {
  const uiContext = this.getUIContext().getHostContext() as common.UIAbilityContext;
  const pkg = "com.bc.xueba";
  const uri = "store://appgallery.huawei.com/app/detail?id=" + pkg; // + "&action=write-review";

  let want: Want = {
          action: 'ohos.want.action.appdetail',
          uri: uri
  };
  uiContext.startAbility(want).then(() => {
          console.log("ok")
  }).catch((error: BusinessError) => {
          console.log(error.message);
  });
}

鸿蒙Next应用市场服务更新功能基于分布式技术实现应用自动检测与静默升级。该功能通过原子化服务架构,支持按需更新与增量包分发,减少流量消耗。更新过程采用端云协同机制,确保版本一致性。用户可在设置中管理自动更新策略,系统会优先通过WLAN网络执行更新任务。

在HarmonyOS Next中,showUpdateDialog 接口目前的设计逻辑是:用户点击“取消”按钮后,弹窗会直接关闭,并不会退出应用。应用会继续正常运行。当前版本的SDK确实没有提供独立的“取消更新”点击回调,取消操作被视为用户主动忽略此次更新。

关于第二个问题:可以完全自定义实现

  1. 自定义更新检测与弹窗:你完全可以自主实现版本检查逻辑(例如,通过你的服务器获取最新版本信息)和自定义的更新提示弹窗(使用AlertDialog或自定义弹窗组件)。
  2. 控制更新行为:在你的自定义弹窗中,当用户点击“更新”时,你可以不触发系统应用市场的自动下载流程,而是通过wantlink的方式,直接跳转到你的应用在华为应用市场的详情页。这通常可以通过构造一个指向应用市场该应用页面的URI来实现。

总结

  • 系统showUpdateDialog的“取消”操作无回调,仅关闭弹窗。
  • 如需更复杂的交互逻辑(如取消回调)或定制化更新流程(如跳转应用市场而非直接下载),推荐你自行实现版本检测与弹窗界面,这样可以获得完全的控制权。
回到顶部