跳到主要内容

通过直达应用市场能力跳转至应用市场下载详情页

场景介绍

从5.0.3(15)版本开始,新增支持直达应用市场能力。

当成功配置App Linking应用链接后,可以构建App Linking直达应用市场下载详情页链接。当应用已安装时,点击链接直接跳转应用;当应用未安装时,点击链接跳转应用市场下载详情页,引导用户下载应用。

华为分享打开场景其他社交APP打开场景

原理机制

链接生效机制

直达应用市场链接配置后不是即时生效的,一般要24小时生效,也有可能出现48小时生效的情况。

前提条件

  1. 目标方应用已配置App Linking应用链接
  2. 目标方HarmonyOS应用必须已上架,具体可参见“发布HarmonyOS应用”。

约束与限制

只能获取通过App Linking域名校验的应用链接,请参见在AGC为应用创建关联的网址域名

开发步骤

  1. 配置直达应用市场能力。

    1. 登录AppGallery Connect,点击“开发与服务”。

    2. 在项目列表中点击目标方应用所在的项目。

    3. 在左侧导航栏中选择“增长 > App Linking > 应用链接”,点击“操作”列的“直达应用市场”。

      只有在AGC创建关联的网址域名状态为“成功”时,才支持配置直达应用市场链接。

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

      • 可以点击“添加应用”为多个应用配置直达链接,当该域名下关联的在架应用全部配置后,无法再添加应用。

      • 可以根据以下规则配置直达链接。

        路径匹配规则
        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匹配规则进行选择。

      • 可以点击“删除链接”删除当前关联应用的直达应用市场链接。

    5. 配置完成后,点击页面顶部的“发布”,会跳转到“应用链接”列表页面。

      如下图,“是否配置直达应用市场”显示“是”,表示链接配置成功。

      链接配置成功后,一般需要24~48小时才能生效,请耐心等待。

  2. 验证应用被拉起效果。

    • 方式一:将直达应用市场链接地址存入备忘录中,并点击验证该链接是否可以拉起应用。

    • 方式二:通过openLink接口拉起应用。

      1. 拉起方应用需调用UIAbilityContext.openLink()接口,并将appLinkingOnly参数设为false或者不传,以App Linking优先的方式打开应用。

        1. 在“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;
          }
          }
        2. 在“entry/src/main/ets/entryability/EntryAbility.ets”文件中导入GlobalContext,在onCreate方法中使用GlobalContext.initContext(this.context)初始化全局应用上下文。

        3. 在“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
          @Component
          struct 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}`);
          })
          })
          }
          }
      2. 安装拉起方应用,点击拉起方应用中的跳转按钮。

        此时目标应用未安装,若有App Linking相匹配的应用,点击链接会跳转应用市场下载详情页,引导用户安装应用;若无App Linking相匹配的应用,则继续尝试以浏览器打开链接的方式打开应用。

      3. 安装目标方应用后,点击拉起方应用的跳转按钮,会直接打开应用。

FAQ

使用ArkWeb拉起目标应用,当目标应用未安装时,会直接跳转到应用市场下载详情页面吗?

当开发者通过系统浏览器或ArkWeb拉起目标应用时,如果目标应用未安装,不会直接跳转应用市场,需要开发者根据自身业务自行实现跳转应用市场的能力。详细可参见“Web和应用的跳转与拉起”开发实践中的《ArkWeb页面指定应用跳转》章节。

哪些服务支持接入App Linking Kit的直达应用市场能力?

支持的服务如下:

华为分享、碰一碰分享、短信、畅联以及其他支持openLink API的场景。

不支持的服务如下:

浏览器、扫码(规划中,上线后自动生效,无需适配)。

直达链接的路径(path、pathStartWith或pathRegex)可以配置多少条?

每个应用支持配置1条。