当前位置: 首页 > news >正文

【HarmonyOS NEXT】跳转到华为应用市场进行应用下载并更新

一、背景

在HarmonyOS应用开发中,经常需要引导用户跳转到华为应用市场(AppGallery)的应用详情页,主要场景包括:

  • 应用更新:引导用户到应用市场更新当前应用
  • 应用推广:推荐用户下载公司其他应用
  • 用户评价:引导用户对应用进行评分
  • 应用详情:展示应用的详细信息和描述

实现方案

方案一:使用productViewManager.loadProduct接口(推荐)

import { common, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { productViewManager } from '@kit.StoreKit';@Entry
@Component
struct Index {build() {Column({ space: 20 }) {Button('跳转到应用市场-方式1').onClick(() => {this.openAppDetail(getContext() as common.UIAbilityContext)})}.width('100%').height('100%')}openAppDetail(context: common.UIAbilityContext) {// 1. 构造Want参数const wantParam: Want = {parameters: {bundleName: context.abilityInfo.bundleName//拉起方应用包名}}// 2. 定义错误回调const callback: productViewManager.ProductViewCallback = {onError: (error: BusinessError) => {console.error('TAG', `loadProduct onError.code is ${error.code}, message is ${error.message}`);}}// 3. 调用接口try {productViewManager.loadProduct(context, wantParam, callback);} catch (error) {const err: BusinessError = error as BusinessError;console.error('ProductView', `调用失败: ${err.message}`);}}
}

方式二:DeepLink方式

构造拼接bundleName的DeepLink链接,其中bundleName为需要打开的应用包名

import { common, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';@Entry
@Component
struct Index {build() {Column({ space: 20 }) {Button('跳转到应用市场-方式2').onClick(() => {this.startAppGalleryDetailAbility(getContext(this) as common.UIAbilityContext)})}.width('100%').height('100%')}// 拉起应用市场对应的应用详情页面startAppGalleryDetailAbility(context: common.UIAbilityContext) {let want: Want = {action: 'ohos.want.action.appdetail',//bundleName为需要打开应用详情的应用包名uri: `store://appgallery.huawei.com/app/detail?id=${context.abilityInfo.bundleName}`,};context.startAbility(want).then(() => {console.info("Succeeded in starting Ability successfully.")}).catch((error: BusinessError) => {console.error(`Failed to startAbility.Code: ${error.code}, message is ${error.message}`);});}
}

方案三App Linking方式

构造拼接bundleName的App Linking链接,其中bundleName为需要打开的应用包名

import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';@Entry
@Component
struct Index {build() {Column({ space: 20 }) {Button('跳转到应用市场-方式3').onClick(() => {this.openAppLink(getContext() as common.UIAbilityContext)})}.width('100%').height('100%')}openAppLink(context: common.UIAbilityContext) {// 需要拼接不同的应用包名,用以打开不同的应用详情页,例如:bundleName: 'com.huawei.hmsapp.books'let link: string = 'https://appgallery.huawei.com/app/detail?id=' + context.abilityInfo.bundleName;// 以App Linking优先的方式在应用市场打开指定包名的应用详情页context.openLink(link, { appLinkingOnly: false }).then(() => {console.info('TAG', 'openlink success.');}).catch((error: BusinessError) => {console.error('TAG', `openlink failed. Code: ${error.code}, message is ${error.message}`);});}
}

注意:

若该App未上架,则会出现下面提示

相关文章:

  • Cesium快速入门到精通系列教程十一:Cesium1.74中高性能渲染上万Polyline
  • TDengine 如何打破工业实时数据库势力边界?
  • Redis高级数据结构深度解析:BitMap、布隆过滤器、HyperLogLog与Geo应用实践
  • 某音Web端消息体ProtoBuf结构解析
  • 【网络安全】网络安全中的离散数学
  • BUUCTF在线评测-练习场-WebCTF习题[BJDCTF2020]Easy MD51-flag获取、解析
  • 第九节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 菜单管理(上)
  • 笔记07:网表的输出与导入
  • 家政维修平台实战30:处理售后
  • ABP VNext + 多数据库混合:SQL Server+PostgreSQL+MySQL
  • 开疆智能ModbusTCP转CClinkIE网关连接台达DVP-ES3 PLC配置案例
  • 嵌入式硬件与应用篇---寄存器GPIO控制
  • 【音视频】H.264详细介绍及测试代码
  • 电子电气架构 --- 车辆产品的生产周期和研发周
  • 深入解析 Electron 架构:主进程 vs 渲染进程
  • Blender速成班-知识补充
  • Opencv计算机视觉PPT-算法篇
  • 在项目中如何巧妙使用缓存
  • nginx基本使用 linux(mac下的)
  • 【SpringBoot高级】SpringBoot与Kafka深度整合:从入门到企业级实战