HarmonyOS鸿蒙Next应用如何使用App Linking?请提供配置步骤和代码集成示例

HarmonyOS鸿蒙Next应用如何使用App Linking?请提供配置步骤和代码集成示例 App Linking 在传统 Deep Linking 技术的基础上,增加了域名校验环节,从而提升了链接的安全性和可靠性。

cke_431.png

那鸿蒙应用如何使用App Linking?请提供配置步骤和代码集成示例


更多关于HarmonyOS鸿蒙Next应用如何使用App Linking?请提供配置步骤和代码集成示例的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

一、结论

HarmonyOS 的 App Linking 功能为开发者提供了一个强大的工具,通过创建跨平台的深度聚合链接,实现用户在不同场景下的无缝跳转,极大地提升了用户转化率和应用的可用性。

需要在AGC平台进行应用服务的开通。

其安全性、智能路由和跨平台特性,使其在各种应用场景中都具有广泛的应用前景。无论是社交、电商还是新闻类应用,App Linking 都能够帮助开发者提高用户转化率和应用的活跃度。

二、代码实现和详细解释

(1)开通 App Linking 服务: 开发者登录 AppGallery Connect,进入项目控制台,在 “增长” 选项中找到 “App Linking”,点击开通服务。

cke_958.png

配置网址域名: 在开发者的服务器上,需要创建并部署一个名为 applinking.json 的文件。这个文件包含了应用的 APP ID 等重要信息,用于声明该应用与特定域名的关联关系。

例如:

{
    "apps": [
        {
            "appIdentifier": "com.example.harmonyos.app",
            "paths": ["/*"]
        }
    ]
}

AGC 绑定域名: 回到 AppGallery Connect 控制台,在 App Linking 的 “应用链接(API>=12 适用)” 页面,填写并发布与应用相关联的网址域名。AGC 会对配置文件进行校验,确保域名与应用的关联合法有效。

cke_4746.png

用户操作与系统响应 当用户点击一个 App Linking 链接时,系统首先会对链接的域名进行校验。如果校验通过,且目标应用已安装在设备上,系统将直接打开应用并跳转到链接指定的页面。如果目标应用未安装,系统会根据配置,引导用户前往应用市场下载应用。待应用安装完成后,首次打开时,系统会自动识别之前点击的链接,并将用户带到相应的页面。

在 HarmonyOS 应用中实现 App Linking

(1)项目配置 在 HarmonyOS 应用项目的 module.json5 文件中,需要对 App Linking 进行配置。具体来说,需要在 “abilities” 数组下的 “skills” 数组中添加相应的配置项。例如:

{
    "module": {
        "abilities": [
            {
                "name": "EntryAbility",
                "srcEntry": "./ets/entryability/EntryAbility.ts",
                "icon": "$media:icon",
                "label": "$string:EntryAbility_label",
                "exported": true,
                "startWindowIcon": "$media:icon",
                "startWindowBackground": "$color:start_window_background",
                "skills": [
                    {
                        "entities": ["entity.system.home"],
                        "actions": ["action.system.home"]
                    },
                    {
                        "entities": ["entity.system.browsable"],
                        "actions": ["ohos.want.action.viewData"],
                        "uris": [
                            {
                                "scheme": "https",
                                "host": "www.example.com",
                                "path": "specific/path",
                                "domainVerify": true
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

在上述配置中,“scheme” 必须为 “https”,“host” 应与在 AGC 中绑定的域名一致,“path” 则指定了应用内可处理的链接路径。通过合理配置 “path”,可以精确控制哪些链接能够引导用户进入应用内的特定页面,避免无关链接的干扰。

(2)解析链接参数 在应用的 Ability(如 EntryAbility)的生命周期回调函数中,需要添加代码来解析传入链接中的参数。例如,在 onCreate 或 onNewWant 生命周期中:

import { AbilityConstant, UIAbility, Want } from '@ohos.ability';
import { url } from '@ohos.net';

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
        let uri = want?.uri;
        if (uri) {
            let urlObject = url.parseURL(want?.uri);
            let params = urlObject.params;
            // 根据解析出的参数进行相应的业务逻辑处理
        }
    }
}

应用获取链接中的参数,并根据业务需求进行相应的操作,如展示特定内容、执行特定功能等。

更多关于HarmonyOS鸿蒙Next应用如何使用App Linking?请提供配置步骤和代码集成示例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,使用App Linking需先在AppGallery Connect控制台创建链接,配置关联的HAP包。

配置步骤:

  1. 在项目的module.json5文件中,为对应EntryAbility添加skills配置,设置entitiesactions以响应链接。
  2. module.json5abilities中,为EntryAbility添加metadata,其nameohos.ability.app_linkingvalue为在AGC创建的链接URL。

代码集成示例: 在EntryAbility的onCreate生命周期中,通过abilityInfometaData获取启动链接参数。

// 示例:获取App Linking参数
onCreate(want, launchParam) {
    let appLinkingUrl = want.parameters['ohos.ability.app_linking'];
    if (appLinkingUrl) {
        // 处理链接逻辑
    }
}

在HarmonyOS Next中,App Linking的配置与集成主要分为以下几个步骤:

1. 配置应用关联域名

在项目的 module.json5 文件中,为需要接收App Linking的UIAbility配置关联域名。

{
  "module": {
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        "skills": [
          {
            "entities": ["entity.system.browsable"],
            "actions": ["action.system.view"],
            "uris": [
              {
                "scheme": "https",
                "host": "www.example.com",
                "path": "detail"
              }
            ]
          }
        ]
      }
    ]
  }
}

此配置声明了该Ability能够处理指向 https://www.example.com/detail 的链接。

2. 在Ability中接收并处理链接

在对应的UIAbility(如EntryAbility)的 onCreateonNewWant 生命周期回调中,解析传入的Want参数,获取链接数据并进行业务处理。

import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import hilog from '@ohos.hilog';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');

    // 检查Want中是否包含App Linking信息
    if (want.uri) {
      let appLinkingUri = want.uri;
      hilog.info(0x0000, 'testTag', 'Received App Linking: %{public}s', appLinkingUri);
      // 在此处解析URI,例如提取查询参数,并跳转到应用内对应页面
      this.handleDeepLink(appLinkingUri);
    }
  }

  onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // 当Ability已在后台时,通过新的链接被唤起,会触发此回调
    if (want.uri) {
      let appLinkingUri = want.uri;
      hilog.info(0x0000, 'testTag', 'Received New App Linking: %{public}s', appLinkingUri);
      this.handleDeepLink(appLinkingUri);
    }
  }

  private handleDeepLink(uri: string): void {
    // 示例:解析URI,假设链接为 https://www.example.com/detail?id=123
    try {
      let urlObj = new URL(uri);
      let params = new URLSearchParams(urlObj.search);
      let id = params.get('id'); // 获取 id=123
      if (id) {
        // 携带参数跳转到应用内具体页面,例如商品详情页
        // 具体页面路由逻辑取决于您使用的导航方案(如Router)
        hilog.info(0x0000, 'testTag', 'Navigate to detail page with id: %{public}s', id);
      }
    } catch (error) {
      hilog.error(0x0000, 'testTag', 'Failed to parse URI: %{public}s', error.message);
    }
  }
}

3. 生成App Linking

您可以在服务端或应用内,按照配置的格式生成链接,例如:https://www.example.com/detail?id=123。当用户在设备上点击此链接时,系统会校验域名与应用声明的匹配关系,并通过Want机制将链接分发到您的应用。

关键点说明

  • 域名校验:系统会验证链接的host是否与应用在skills.uris中声明的host一致,这是App Linking安全性的核心。
  • 链接格式:链接必须使用HTTPS协议(scheme: https),路径(path)需要与声明的前缀匹配。例如,声明了path: "detail",则可以处理/detail/detail//detail?id=1等路径。
  • 多Ability配置:可以为不同的Ability配置不同的uri规则,以处理不同模式的链接。

通过以上配置和代码,即可在HarmonyOS Next应用中实现基本的App Linking功能,实现从网页安全、可靠地跳转到指定应用页面。

回到顶部