鸿蒙AppLink即iOS的通用跳转(Universal Link)的实现

写在前面

鸿蒙作为一个新的系统,借鉴了很多其他系统的实现方案,并做了一些更加高效的提升,虽然目前大部分公司在开发的时候都是让安卓或者web的同事来开发,但我觉得之前有iOS开发经验的同学,更能理解鸿蒙系统的一些实现设计和方案,比如:应用内支付等等,包括这次分享的Applink,其实现效果和iOS的通用跳转基本是一致的。

适用场景

通用跳转的适用场景对于大部分公司的App来说,都是分享H5页面到微信或者用系统浏览器打开之后,可以直接通过点击按钮,打开对应的App,并可以携带对应的参数,达到一个H5和App的互通。在鸿蒙里,虽然当时开发的时候还没有微信,但是也可以通过系统浏览器来模拟这个跳转。

开发前准备工作

  1. 获取Associated Domains,这个是配置在iOS工程里的,也就是我们之前iOS已经实现的通用链接的域名,我当然默认你们已经有了。获取的位置如下图,看配置就能发现,可以配置多个域名,方便我们实际应用时进行区分。
  1. 创建域名配置文件applinking.json,内容如下:
{ 复制代码
         "applinking": {
           "apps": [
             {
    		/// 在应用后台查看自己应用的APP ID
               "appIdentifier": "1234567"
             }
           ]
         }
        } 
  1. 将这个配置文件,放到第一步中,我们所支持的domain下。举个例子,我们支持的domain是:card.test.io,那么我们就要将配置文件放到:card.test.io/.well-known... 这一步让公司的运维来操作就行,你发给他配置文件,并且告诉他需要访问到的路径就行。
  2. 打开华为的应用后台,找到增长-App Linking菜单,按照下图创建应用链接即可。举个例子,我们支持的domain是:card.test.io,那么新建的域名就是:card.test.io。这一步创建成功后,华为会去校验你创建的域名下是否能访问到applinking.json文件,正常能访问,状态就会变为成功。

鸿蒙项目配置

鸿蒙项目中的配置,参考文档进行配置即可,主要是对module.json5文件的skills进行修改。我这里提供一份我自己的配置供大家参考。

因为我们自己的应用除了要支持App Linking外,还支持音频的后台播放,这部分配置和文档中的有些许差别,不过没关系,仅供参考,配置的module.json5文件是我们EntryAbility的module.json5文件,大部分的内容都是固定的,需要修改的部分,一眼就能看到。

json 复制代码
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ],
          },
          {
            "domainVerify": true,
            "entities": [
              "entity.system.browsable",
              "entity.system.home"
            ],
            "actions": [
              "ohos.want.action.viewData",
              "action.system.home"
            ],
            "uris": [
              {
                "scheme": "https",
                "host": "deeplink.test.io"
              },
              {
                "scheme": "https",
                "host": "card.test.io"
              },
              {
                "scheme": "https",
                "host": "card.test.com"
              },
              {
                "scheme": "https",
                "host": "deeplink.test.com"
              }
            ]
          }
        ]

处理App Linking的跳转事件

  • 通过App Linking冷启动App
  • 通过App Linking热启动App

在EntryAbility.ets中实现对应的方法,就可以获取到完整的App Linking地址,根据实际情况进行跳转即可。

scss 复制代码
  /// 冷启动
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    let uri = want?.uri
    if (uri) {
      // 从链接中解析query参数,拿到参数后,开发者可根据自己的业务需求进行后续的处理。
    }
  }

	/// 热启动
  onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam) {
    let uri = want?.uri
    if (uri) {
          // 从链接中解析query参数,拿到参数后,开发者可根据自己的业务需求进行后续的处理。
    }
  }

网页部分

H5部分在点击跳转时,需要和iOS设备类型的实现方式一致,即简单的实现打开链接即可,类似:

window.location='<https://deeplink/xxxx'

最后

在实现的过程中,遇到过在浏览器点击链接打开的时候,会提示:无法打开此链接,可前往应用市场查找更多应用的提示。但是还是打开了目标App,和华为的人反馈说后续会修复,不知道是因为当时支持App Linking的版本还没有上线的缘故,反正目前上架之后,在浏览器里点击打开的时候,已经没有这个提示了,所以遇到这个提示,大家也不用担心。

参考文档

developer.huawei.com/consumer/cn...

相关推荐
梦想不只是梦与想6 小时前
鸿蒙 AI自动化测试实现
单元测试·harmonyos·hypium
用户09340777351412 小时前
HarmonyOS WPS Open SDK 工程实践:把 registerApp 做成就绪门禁
typescript·harmonyos
大雷神14 小时前
HarmonyOS7应用《拼棋派对》实战:双人键盘操作与窗口焦点恢复
harmonyos·arkui·harmonyos 7.0·玩转 arkts
2501_9462447816 小时前
开源鸿蒙平台 CMP 三方库「compose-continuous-rounded-corner-shape」适配全流程
华为·开源·harmonyos
KevinChaos16 小时前
灶台菜谱设计手记 03|HarmonyOS 7.0 空间化:沉浸光感反馈
harmonyos
大雷神17 小时前
HarmonyOS7应用《拼棋派对》实战:折叠屏与电脑的窗口布局适配
harmonyos·arkui·harmonyos 7.0·玩转 arkts
2501_9462447817 小时前
开源鸿蒙平台 CMP 三方库「Waterfall」适配全流程
华为·开源·harmonyos
2401_zq136y0317 小时前
开源鸿蒙平台 CMP 三方库「Jewel」适配全流程
华为·开源·harmonyos
2601_9494800618 小时前
开源鸿蒙平台 KMP 三方库「AutoLinkText」适配全流程
华为·开源·harmonyos
JoyCong199818 小时前
ToDesk鸿蒙PC端又焕新!远控更稳、操作更准,跨端办公如本地
运维·华为·智能手机·harmonyos·远程工作