鸿蒙Next app deeplink如何配置

在鸿蒙Next中配置app的deeplink具体需要哪些步骤?我在开发文档中没找到详细的配置说明,能否提供具体的示例代码或配置方法?比如如何定义scheme和host,以及如何确保应用能正确响应deeplink跳转?

2 回复

鸿蒙Next配置deeplink只需三步:

  1. 在config.json里添加uriScheme,比如"demo"
  2. 在module.json5里声明skills,配好actions和entities
  3. 在Ability里重写onCreate,用getIntent().getUri()接住链接

举个栗子:harmonyos://demo/home?page=1 这样就能从外部直接唤醒你的App啦!简单得就像叫外卖~

更多关于鸿蒙Next app deeplink如何配置的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中配置DeepLink(深度链接)主要通过以下步骤实现,允许应用通过特定URL被外部调用:

1. module.json5 中声明Scheme

在应用的配置文件里添加 uritype 字段:

"abilities": [
  {
    "name": "EntryAbility",
    "srcEntry": "./ets/entryability/EntryAbility.ets",
    "skills": [
      {
        "entities": ["entity.system.home"],
        "actions": ["action.system.home"],
        "uris": [
          {
            "scheme": "myapp",   // 自定义Scheme名称
            "host": "example",   // 域名(可选但建议设置)
            "port": "8080",      // 端口(可选)
            "path": "detail"     // 路径(可选)
          }
        ]
      }
    ]
  }
]

2. 在Ability中解析参数

在对应的Ability中重写 onCreate 方法,通过 want 参数获取URL及参数:

import Ability from '[@ohos](/user/ohos).app.ability.UIAbility';
import Want from '[@ohos](/user/ohos).app.ability.Want';

export default class EntryAbility extends Ability {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    // 获取DeepLink的URI
    if (want.uri) {
      console.log('DeepLink URI:', want.uri); // 示例:myapp://example:8080/detail?id=123
      // 解析参数(需自行实现URL解析逻辑)
      const params = new URL(want.uri).searchParams;
      const id = params.get('id');
      // 根据参数跳转到对应页面
    }
  }
}

3. 触发DeepLink

  • 其他应用调用:通过 startAbility 发起请求。
  • 测试方式:使用 aa start -a EntryAbility -b ... 命令或直接在浏览器中输入 myapp://example/detail?id=123(需设备支持)。

注意事项:

  • 唯一性:Scheme名称应避免与其他应用冲突。
  • 路径匹配path 可设置为具体路径(如 "path": "detail"),支持模糊匹配。
  • 安全验证:必要时对参数进行校验,防止恶意调用。

通过以上配置,即可实现鸿蒙Next应用的DeepLink功能,支持从网页或其他应用直接跳转到指定页面。

回到顶部