通过直达应用市场能力跳转至应用市场下载详情页
场景介绍
从5.0.3(15)版本开始,新增支持直达应用市场能力。
当成功配置App Linking应用链接后,可以构建App Linking直达应用市场下载详情页链接。当应用已安装时,点击链接直接跳转应用;当应用未安装时,点击链接跳转应用市场下载详情页,引导用户下载应用。
| 华为分享打开场景 | 其他社交APP打开场景 |
|---|---|
原理机制
链接生效机制
直达应用市场链接配置后不是即时生效的,一般要24小时生效,也有可能出现48小时生效的情况。
前提条件
- 目标方应用已配置App Linking应用链接。
- 目标方HarmonyOS应用必须已上架,具体可参见“发布HarmonyOS应用”。
约束与限制
只能获取通过App Linking域名校验的应用链接,请参见在AGC为应用创建关联的网址域名。
开发步骤
-
配置直达应用市场能力。
-
登录AppGallery Connect,点击“开发与服务”。
-
在项目列表中点击目标方应用所在的项目。
-
在左侧导航栏中选择“增长 > App Linking > 应用链接”,点击“操作”列的“直达应用市场”。
只有在AGC创建关联的网址域名状态为“成功”时,才支持配置直达应用市场链接。

-
在配置页面,下拉选择与该域名关联的在架应用,为应用配置直达应用市场链接。

-
可以点击“添加应用”为多个应用配置直达链接,当该域名下关联的在架应用全部配置后,无法再添加应用。
-
可以根据以下规则配置直达链接。
路径 匹配规则 path 精确匹配 pathStartWith 前缀匹配 pathRegex 正则表达式匹配 -
如果在module.json5中配置关联的网址域名时,未配置path、pathStartWith或pathRegex,必须是如下匹配规则之一:
pathRegex,匹配路径:.*
path,手动输入精确匹配的路径(不允许以“/”开头,不允许出现双斜杠“//”和“..”,允许包含字母(a-z、A-Z)、数字(0-9)、正斜杠“/”、点“.”、下划线“_”和连字符“-”)
-
(不推荐)如果在module.json5中配置关联的网址域名时,path匹配规则中配置了pathRegex,且值为.*,可以包含如下匹配规则:
pathRegex,匹配路径:.*
path,手动输入精确匹配的路径(不允许以“/”开头,不允许出现双斜杠“//”和“..”,允许包含字母(a-z、A-Z)、数字(0-9)、正斜杠“/”、点“.”、下划线“_”和连字符“-”)
-
其他场景需要根据在module.json5中配置关联的网址域名时配置的path匹配规则进行选择。
-
-
可以点击“删除链接”删除当前关联应用的直达应用市场链接。
-
-
配置完成后,点击页面顶部的“发布”,会跳转到“应用链接”列表页面。
如下图,“是否配置直达应用市场”显示“是”,表示链接配置成功。
链接配置成功后,一般需要24~48小时才能生效,请耐心等待。

-
-
验证应用被拉起效果。
-
方式一:将直达应用市场链接地址存入备忘录中,并点击验证该链接是否可以拉起应用。
-
方式二:通过openLink接口拉起应用。
-
拉起方应用需调用UIAbilityContext.openLink()接口,并将appLinkingOnly参数设为false或者不传,以App Linking优先的方式打开应用。
-
在“entry/src/main/ets/common”目录下添加GlobalContext.ets文件,开发初始化和获取应用上下文的接口。
import { common } from '@kit.AbilityKit';export class GlobalContext {private static context: common.UIAbilityContext;public static initContext(context: common.UIAbilityContext): void {GlobalContext.context = context;}public static getContext(): common.UIAbilityContext {return GlobalContext.context;}} -
在“entry/src/main/ets/entryability/EntryAbility.ets”文件中导入GlobalContext,在onCreate方法中使用GlobalContext.initContext(this.context)初始化全局应用上下文。
-
在“entry/src/main/ets/pages/Index.ets”文件中,使用UIAbilityContext.openLink()接口配置跳转链接。
import { hilog } from '@kit.PerformanceAnalysisKit';import { BusinessError } from '@kit.BasicServicesKit';import { GlobalContext } from '../common/GlobalContext';@Entry@Componentstruct Index {build() {Button('start link', { type: ButtonType.Capsule, stateEffect: true }).width('87%').height('5%').margin({ bottom: '12vp' }).onClick(() => {let context = GlobalContext.getContext();let link: string = "https://www.example.com/product?pageName=productDetail";context.openLink(link, { appLinkingOnly: false }).then(() => {hilog.info(0x0000, 'testTag', `Succeeded in opening link.`);}).catch((error: BusinessError) => {hilog.error(0x0000, 'testTag', `Failed to open link, code: ${error.code}, message: ${error.message}`);})})}}
-
-
安装拉起方应用,点击拉起方应用中的跳转按钮。
此时目标应用未安装,若有App Linking相匹配的应用,点击链接会跳转应用市场下载详情页,引导用户安装应用;若无App Linking相匹配的应用,则继续尝试以浏览器打开链接的方式打开应用。
-
安装目标方应用后,点击拉起方应用的跳转按钮,会直接打开应用。
-
-
FAQ
使用ArkWeb拉起目标应用,当目标应用未安装时,会直接跳转到应用市场下载详情页面吗?
当开发者通过系统浏览器或ArkWeb拉起目标应用时,如果目标应用未安装,不会直接跳转应用市场,需要开发者根据自身业务自行实现跳转应用市场的能力。详细可参见“Web和应用的跳转与拉起”开发实践中的《ArkWeb页面指定应用跳转》章节。
哪些服务支持接入App Linking Kit的直达应用市场能力?
支持的服务如下:
华为分享、碰一碰分享、短信、畅联以及其他支持openLink API的场景。
不支持的服务如下:
浏览器、扫码(规划中,上线后自动生效,无需适配)。
直达链接的路径(path、pathStartWith或pathRegex)可以配置多少条?
每个应用支持配置1条。