HarmonyOS 请问目前支持自定义deeplink 跳转吗?

HarmonyOS 请问目前支持 自定义deeplink 跳转吗?app 的跳转链接是:igetapp://search/result,想在HarmonyOS 也实现从其他 app 或者网页跳转到我们的 app,目前看到的 scheme 只能定义为:https,想自定义deeplink 怎么实现呢?

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 565
avatarAI BotBETA

HarmonyOS 支持自定义 deeplink 跳转

在 HarmonyOS 中,你可以通过自定义 deeplink 的 scheme 来实现从其他 app 或者网页跳转到你的 app。虽然系统支持使用如 "https" 这样的标准 scheme,但同样允许开发者定义任意形式的 scheme,以实现灵活的应用间跳转。

要实现自定义 deeplink 跳转,你需要进行以下步骤:

  1. 定义自定义 scheme

    • 自定义 scheme 可以是任意不包含特殊字符、且非 "ohos" 开头的字符串。例如,你可以使用 "igetapp" 作为你的 scheme。
  2. 配置目标应用

    • 在你的目标应用的 module.json5 配置文件中,声明 URL skill,并指定自定义的 scheme。
    • 配置示例:

      {
        "module": {
          "abilities": [
            {
              "name": "EntryAbility",
              "skills": [
                {
                  "entities": ["entity.system.browsable"],
                  "actions": ["ohos.want.action.viewData"],
                  "uris": [
                    {
                      "scheme": "igetapp",
                      "host": "search",
                      "path": "/result"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    • 在这个配置中,scheme 字段被设置为 "igetapp",这与你想使用的自定义 scheme 相匹配。
  3. 实现跳转

    • 在其他 app 或者网页中,你可以通过构造一个包含自定义 scheme 的 URL 来触发跳转。例如:igetapp://search/result
    • 当系统接收到这个 URL 时,它会根据 uri 匹配规则在本地已安装的应用中查找符合配置的应用,并拉起该应用。
  4. 处理传入的链接

    • 在你的目标应用中,你需要处理传入的 deeplink 链接,并根据链接中的参数执行相应的操作。

通过以上步骤,你就可以在 HarmonyOS 中实现自定义 deeplink 跳转了。请注意,在实际开发中,你需要确保你的自定义 scheme 是唯一的,以避免与其他应用发生冲突。同时,你也需要按照 HarmonyOS 的开发规范进行配置和实现。

1 个回答

浏览器支持Deeplink链接的打开能力。应用想要响应Deeplink拉起,需要注册viewData action和scheme+host,这样才能匹配到。如果有多个应用注册了相同的scheme+host,就会拉起应用选择框,让用户选择某个应用。
Deeplink响应的声明,需要在module.json5文件的接收Ability中skills项中增加action和uris内容:

"skills": [ 
{ 
  ... 
  "actions": [ 
  "ohos.want.action.viewData" // 声明Deeplink接收的Action,这个是固定的 
  ... 
  ], 
  "uris": [ 
  { 
    "scheme": "store",  // scheme尽量做到唯一 ,仅设置此协议头就可以跳转 
  "host": "test.xxx.com" // host不与其他应用相同,这样可以减少冲突 
  } 
  ... 
  ] 
  ... 
} 
]

需要注意deeplink链接的scheme协议头必须网页拉起的链接的应用配置的保持一致。
另外浏览器不会对deeplink链接做任何解析或处理,只会原封不动的传递给拉起的应用。因此第三方应用只需要自己的网页端和应用端协商好url规则,自己去做解析打开对应页面即可

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>测试页面</title> 
    <script> 
        function goToLink() { 
            window.open('store://appgallery.huawei.com/app/detail?id=C1229.....4278976') 
        } 
    </script> 
</head> 
<body> 
<div align="center"> 
    <button type="button" id="btn_navi" onclick="goToLink()">跳转应用市场</button> 
</div> 
</body> 
</html>

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题