【HarmonyOS】【进阶】鸿蒙原生实现应用间跳转之Deep Linking

0 阅读2分钟

踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!developer.huawei.com/consumer/cn…

开发语言:ArkTs
开发工具:DevEco Studio 5.0.0 Release
API版本:API 12

使用Deep Linking实现应用间跳转,系统会根据接口中传入的uri信息,在本地已安装的应用中寻找到符合条件的应用并进行拉起(当匹配到多个应用时,会拉起应用选择框)。此种方式与iOS、Android中的配置scheme方式相同,都是通过特定scheme的方式拉起指定APP。

本文演示A应用(拉起方)拉起B应用(被拉起方)

一、B应用(被拉起方)的代码及配置

1、配置B应用(被拉起方)的module.json5文件

为了能够支持被A应用(拉起方)访问,B应用(被拉起方)需要在module.json5配置文件中配置skills标签。

说明:skills标签下默认包含一个skill对象,用于标识应用入口。应用跳转链接不能在该skill对象中配置,需要创建独立的skill对象。如果存在多个跳转场景,需要在skills标签下创建不同的skill对象,否则会导致配置无法生效。
Deep Linking中的scheme取值支持自定义,可以为任意不包含特殊字符、非ohos开头的字符串。通常不为https、http、file,否则会拉起默认的系统浏览器。

图片 1.png

2、在B应用(被拉起方)中获取并解析A应用(拉起方)传入的应用链接

在B应用(被拉起方)的UIAbility的onCreate()或者onNewWant()生命周期回调中,获取、解析A应用(拉起方)传入的应用链接。

图片 2.png

二、A应用(拉起方)的代码配置

下面介绍如何使用openLink()与startAbility()接口实现应用跳转,以及如何在Web组件中实现应用跳转。

1、判断B应用(被拉起方)是否安装

① 在entry模块的module.json5文件中配置querySchemes属性,声明想要查询的URL scheme。

图片 3.png

② 调用bundleManager.canOpenLink()接口。

图片 4.png

2、使用openLink()实现应用跳转

在openLink接口的link字段中传入目标应用的URL信息,并将options字段中的appLinkingOnly配置为false。

图片 5.png

3、使用startAbility()实现应用跳转

startAbility接口是将应用链接放入want中,通过调用隐式want匹配的方法触发应用跳转。通过startAbility接口启动时,还需要调用方传入待匹配的action和entity。

图片 6.png

图片 7.png

4、使用Web组件实现应用跳转

Web组件需要跳转DeepLink链接应用时,可通过拦截回调onLoadIntercept中对定义的事件进行处理,实现应用跳转。

图片 8.png

图片 9.png

(转载自51CTO,作者:龙儿筝)

图片 10.png