HarmonyOS 鸿蒙Next应用未上架 ,如何调试检测应用更新功能是否正常?

HarmonyOS 鸿蒙Next应用未上架 ,如何调试检测应用更新功能是否正常? 鸿蒙的checkAppUpdate这个API未上架时能否是否可以生效调用?

7 回复

未上架应用可以生效调用checkAppUpdate这个API。

【背景知识】
应用市场更新功能为开发者提供版本检测、显示更新提醒功能。开发者使用应用市场更新功能可以提醒用户及时更新到最新版本。
当应用启动完成或用户在应用中主动检查应用新版本时,开发者可以通过本服务,来查询应用是否有可更新的版本。如果存在可更新版本,您可以通过本服务为用户显示更新提醒。

【解决方案】

接口说明:
checkAppUpdate(context: common.UIAbilityContext): Promise<CheckUpdateResult>。
检查更新接口,用于检测当前是否有新版本。
showUpdateDialog(context:common.UIAbilityContext): Promise<ShowUpdateResultCode>。
显示升级对话框接口,用于提示用户进行升级。
参考链接:应用市场更新接口API

开发步骤:
开发者可以在应用启动或者设置内手动触发检查版本更新,并显示升级弹窗,点击升级跳转应用市场进行升级。
注意:假设某应用在应用市场的版本是100001,开发者可以将本地调试代码中app.json5文件里的versionCode改为100000,然后可以调试版本更新检查业务。
检测新版本和升级弹窗代码如下:

import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { updateManager } from '@kit.AppGalleryKit';

const TAG = 'checkAppUpdate';

@Entry
@Component
struct Index {
  @State message: string = 'check';
  @State @Watch('showUpdateDialog') updateAvailableResult: number = 0; // 默认为0,1表示存在新版本
  context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;

  checkAppUpdate() {
    try {
      updateManager.checkAppUpdate(this.context).then((checkResult: updateManager.CheckUpdateResult) => {
        this.updateAvailableResult = checkResult.updateAvailable.valueOf();
        hilog.info(0, TAG, `Succeeded in checking Result updateAvailable: ${checkResult.updateAvailable}`);
      }).catch((error: BusinessError) => {
        hilog.error(0, TAG, `checkAppUpdate 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}`);
    }
  }

  showUpdateDialog() {
    try {
      updateManager.showUpdateDialog(this.context).then((resultCode: updateManager.ShowUpdateResultCode) => {
        hilog.info(0, TAG, `Succeeded in showing UpdateDialog resultCode: ${resultCode}`);
      }).catch((error: BusinessError) => {
        hilog.error(0, TAG, `showUpdateDialog onError.code is ${error.code}, message is ${error.message}`);
      });
    } catch (error) {
      hilog.error(0, TAG, `showUpdateDialog onError.code is ${error.code}, message is ${error.message}`);
    }
  }

  build() {
    Column() {
      Text(this.message)
        .fontSize($r('app.float.page_text_font_size'))
        .fontWeight(FontWeight.Bold)
        .margin(50)
        .onClick(() => {
          this.checkAppUpdate();
        })
    }
    .height('100%')
    .width('100%')
  }
}

【常见FAQ】

Q:设备已安装低版本应用,发布高版本邀请测试是否能测试验证应用内更新功能。
A:不行,应用市场更新API只能检测到正式在架的高版本,未正式上架应用市场的应用使用该API抛1009400001异常。

Q:是否支持强制升级(不升级无法进入应用)?
A:目前不支持强制更新应用,但是开发者可以自行实现,通过checkAppUpdate判断用户版本是否需要更新,根据返回的CheckUpdateResult的值来判断是否有新版本,从而可弹窗拉起应用市场的应用详情页更新。

Q:升级弹窗是否能自定义?
A:不可以,检测到有新版本需要更新后,弹出系统弹窗去应用市场的应用详情页更新,跳转应用详情页参考应用详情页展示

Q:是否可以下载安装历史版本的App?
A:历史版本已下架,当前不支持。

Q:上架时未更新版本号,应用市场是否会对用户有更新提示?
A:不会有提示,用户自行搜索可以更新下载,或者伙伴升级版本号重新提交审核。

Q:判断版本升级的接口checkAppUpdate是根据versionName还是versionCode来判断的?
A:通过versionCode来判断的。

Q:有旧版本应用时,打开应用市场,为何不提示更新?
A:

  • 版本号是在上传的软件包中自动解析的,对应工程中的app.json5配置文件中的versionCode和versionName字段。打包升级前需要手动修改工程的versionCode,必须大于在架版本的versionCode,应用市场显示的是versionName。
  • 新版本未完成上架审核流程或存在同步延迟,导致市场端未检测到更新。

更多关于HarmonyOS 鸿蒙Next应用未上架 ,如何调试检测应用更新功能是否正常?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我记得华为应用市场有一个内测分发功能上传测试包,生成内测链接后安装测试包,然后可以通过checkAppUpdate接口正常检测更新。

如果只是测试自己升级代码可用,可以找一个上架的应用,使用他们的包名,将包名替换成你的app.json5中的bundleName,然后IDE签名,启动,versionCode设置小些,就可以验证升级功能了

AppGellary里面有个邀请测试,可以自己上传软件包之后,发起邀请测试,别人也看不到,自己也可以测试

可以尝试提交应用尝鲜,或者上一个版本以后,进行升级逻辑的调试

针对鸿蒙Next未上架应用调试检测更新功能:

  1. 使用本地模拟更新服务:在工程目录创建mock更新接口,返回测试用版本信息,通过DevEco Studio运行调试。

  2. 配置测试用AppGallery Connect:在AGC控制台创建未上架应用配置,使用测试HAP包签名信息,通过真机调试获取真实响应。

  3. 使用华为提供的更新SDK测试接口:调用ohos.update API时启用测试模式,直接指定测试版本号进行验证。

  4. 通过ADB命令强制触发更新检查:adb shell am broadcast -a ohos.update.test.UPDATE_CHECK

注意确保测试环境与正式环境签名一致。

对于HarmonyOS Next应用未上架时调试应用更新功能的问题:

  1. checkAppUpdate API在开发阶段可以正常调用,但需要配置正确的测试环境:
  • 使用华为AGC的测试版本功能
  • 配置测试设备列表
  1. 调试建议:
  • 通过DevEco Studio的模拟器或真机调试
  • 使用测试版AppGallery Connect配置测试更新包
  • 查看API返回的response数据验证逻辑
  1. 注意事项:
  • 确保应用签名和配置正确
  • 测试时需要联网并登录测试账号
  • 更新包版本号需高于当前安装版本

未上架状态下的调试结果与实际上架后的行为基本一致,可以准确验证更新功能。

回到顶部