HarmonyOS 鸿蒙Next实现Deeplink必须要配置host?

HarmonyOS 鸿蒙Next实现Deeplink必须要配置host? 您好,我在使用Deeplink配置时,遇到了点问题。文档上面说:host是必选项。

"uris": [
    {
        // scheme必选,可以自定义,以link为例,需要替换为实际的scheme
        "scheme": "link",
        // host必选,配置待匹配的域名
        "host": "www.example.com"
    }
]

但是我们在Android和iOS已有诸多的deeplink实现(大概40多个页面),并且使用的格式是: myScheme://pagePath 这样的格式,来链接和触达应用中的不同页面。为了兼容线上已有的deeplink实现,如果按照当前host必须设置的条件,我们需要配置40个多uris…

类似Android和iOS,可以只需要配置myScheme,就可以实现 myScheme://xxxxxx 可以直接通配所有情况。

请问Harmony上面有类似的host缺省或者通配的设置吗?


更多关于HarmonyOS 鸿蒙Next实现Deeplink必须要配置host?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

你好,可以只填写 scheme.

{
    // 自定义的scheme  使用 xianyin://xxxx
    "scheme": "xianyin"
}

应用链接说明

URL的基本格式

按照配置的字段不同,uris可以拼接为不同的URL表达式。其中,scheme为必选字段,其他字段仅当scheme存在时才有意义。

  • 只配置scheme:scheme://

  • 只配置scheme和host:scheme://host

  • 只配置scheme、host和port:scheme://host:port

  • 当配置了path、pathStartWith或pathRegex字段时,组成的表达式如下。

    三方应用组件配置的scheme不能与系统应用重复,否则会导致无法通过该uri拉起三方应用组件。

    • 全路径表达式:scheme://host:port/path
    • 路径前缀表达式:scheme://host:port/pathStartWith
    • 路径正则表达式:scheme://host:port/pathRegex

更多关于HarmonyOS 鸿蒙Next实现Deeplink必须要配置host?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我刚才验证了一下,确实可以只配置scheme。 之前看文档上面是必填项,没想到先试试😂。

在HarmonyOS Next中,实现DeepLink必须配置host。这是系统安全机制的要求,用于验证应用身份和确保链接的唯一性。开发者需要在应用的配置文件(如module.json5)中声明host,以支持通过特定URL打开应用。

是的,在HarmonyOS Next中,host字段在配置Deeplink时是必填项,这是其当前设计规范。

针对您提到的从Android/iOS迁移时,希望像myScheme://pagePath这样仅通过scheme匹配所有路径的场景,目前标准的uris配置方式确实需要为每个不同的路径或通配模式单独声明条目。

不过,有变通方案可以实现您的需求,无需配置40多个条目:

方案:使用通配符 * 作为host值

您可以将host字段配置为通配符 "*"。这样配置后,任何符合您所设scheme的URI(无论host部分是什么)都将被您的应用捕获。

配置示例:

"uris": [
  {
    "scheme": "myScheme",
    "host": "*"
  }
]

完成此配置后,诸如 myScheme://pagePathmyScheme://anyHost/anyPath 等格式的链接都将能触发您的应用并跳转到相应的页面。

关键点说明:

  1. 核心逻辑在应用内处理:配置通配后,所有myScheme://开头的链接都会路由到您的应用。您需要在应用内(通常在onCreate或专门的URI路由模块中)解析完整的URI(包括//之后的部分,即hostpath等),并根据您原有的规则(如pagePath)来分发到不同的页面。
  2. 与Android/iOS的差异:HarmonyOS Next的机制更明确地将host作为过滤条件之一。使用"*"作为通配,是符合其框架要求的做法,既能满足必填校验,又能实现您需要的灵活匹配。
  3. 保持配置简洁:使用此方法,您通常只需配置一个通配条目即可覆盖所有使用同一scheme的深度链接场景,无需为每个路径单独声明。

因此,虽然host字段必填,但通过将其值设为"*",即可有效模拟Android/iOS上仅配置scheme的通配效果,从而兼容您现有的40多个深度链接格式。您只需要确保应用内部的URI解析逻辑能够正确处理传入的完整字符串。

回到顶部