【HarmonyOS】鸿蒙原生实现应用间跳转之 App Linking
开发语言:ArkTs
开发工具:DevEco Studio 5.0.0 Release
API 版本:API 12
使用App Linking进行跳转时,系统会根据接口传入的uri信息(HTTPS链接)将用户引导至目标应用中的特定内容,无论应用是否已安装,用户都可以访问到链接对应的内容,跳转体验相比Deep Linking方式更加顺畅。
本文演示 A 应用(拉起方)拉起 B 应用(被拉起方)。
B 应用(被拉起方)开发
一、后端/云端开发:
1. 在AppGallery Connect开通App Linking服务。
① 登录AppGallery Connect,点击“我的项目”。② 在项目列表中点击您的项目。③ 在左侧导航栏中选择“增长 > App Linking”,进入App Linking页面,点击“立即开通”。
④ 如果您的项目此时未设置数据处理位置,请在提示框内启用数据处理位置和设置默认数据处理位置,点击“确定”。
⑤ 进入“项目设置 > 常规”页面,选择创建的HarmonyOS应用,查看应用的APP ID,后续开发需要使用该 ID。
2. 在开发者网站上关联应用。
在开发者的网站域名服务器上做如下配置。后续当您配置该网站域名时,系统会通过此文件确认哪些应用才是合法归属于此域名的,使链接更加安全可靠。① 创建域名配置文件applinking.json,内容如下:
1、
appIdentifier填写创建应用时生成的APP ID。2、同一个网站域名可以关联多个应用,只需要在apps列表里放置多个appIdentifier元素即可,其中每个appIdentifier元素对应每个应用。
② 将配置文件放在域名服务器的固定目录下:https://domain.name/.well-known/applinking.json
例如:开发者的服务器域名为
www.blink.com,则必须将applinking.json文件放在如下位置:https://www.blink.com/.well-known/applinking.json
3. 在AppGallery Connect关联网址域名。
基于HarmonyOS应用链接能力,需要为HarmonyOS应用创建关联的网址域名。如果用户已安装HarmonyOS应用,则用户点击域名下网址链接后,系统会默认打开该HarmonyOS应用内的相关页面。① 登录AppGallery Connect,点击“我的项目”。② 在项目列表中点击您的项目。③ 在左侧导航栏中选择“增长 > App Linking”,选择“应用链接(API>=12 适用)”页签,点击“创建”。
④ 填写HarmonyOS应用关联的网址域名,即创建域名配置文件的网址,例如:https://www.blink.com。必须输入精确的域名,不可输入包含特殊字符的模糊网址。
不可以在域名后面添加/,即不支持
https://www.example.com/形式。
⑤ 设置完成后点击“发布”,AGC 会对该网站域名的配置文件所包含的应用与本项目内的应用列表进行交集校验。
二、客户端开发:
1. 在DevEco Studio中配置关联的网址域名。
在应用的module.json5文件中进行如下配置,以声明应用关联的域名地址,并开启域名校验开关。
entities列表中必须包含entity.system.browsable。actions列表中必须包含ohos.want.action.viewData。uris列表中必须包含scheme为https且host为域名地址的元素,可选属性包含path、pathStartWith和pathRegex,具体请参见uris标签说明。domainVerify设置为true,表示开启域名校验开关。
2. 处理传入的链接。
在应用的Ability(如EntryAbility)的onCreate()或者onNewWant()生命周期回调中添加如下代码,以处理传入的链接。
三、前端开发
开发链接对应的 H5 网页,应用未安装时呈现网页版内容。
A 应用(拉起方)开发
一、客户端开发
1、判断 B 应用(被拉起方)是否安装
① 在entry模块的module.json5文件中配置querySchemes属性,声明想要查询的URL scheme。
② 调用 bundleManager.canOpenLink()接口。
2. 通过openLink接口拉起。
可根据业务需求选择合适的方式。
方式一: 仅以App Linking的方式打开应用。将appLinkingOnly参数设为true,若有匹配的应用,则直接打开目标应用。若无App Linking匹配的应用,则抛异常给开发者进行处理。
方式二: 以App Linking优先的方式打开应用。将appLinkingOnly参数设为false或者默认,则为App Linking优先的方式打开应用。若有App Linking匹配的应用,则直接打开目标应用。若无App Linking匹配的应用,则尝试以浏览器打开链接的方式打开应用。
3. 通过系统浏览器或 ArkWeb 拉起。
ArkWeb深度集成了App Linking的能力,当用户在系统浏览器或者集成ArkWeb的应用的网页上点击某个链接时,若有链接匹配的应用,系统则会通过App Linking能力优先拉起目标应用,并在应用内展示相应的内容。此机制有如下限制:
如果用户当前浏览的网页的域名与点击的
App Linking链接的域名完全一致,则系统会继续在系统浏览器或ArkWeb中打开该链接,以维持连贯的用户浏览体验。如果域名不完全一致(例如:
example.com和app.example.com),则系统会通过App Linking能力优先拉起目标应用,并在应用内展示相应的内容。
验证应用被拉起效果
对应用进行手动签名。
编译打包,并安装应用至调试设备。
在 A 应用(拉起方)应用中通过
App Linking拉起此应用,详细请参考“拉起方实现跳转指导”。查看集成效果。
不能使用
DevEco Studio的自动签名功能,必须使用手动签名,否则无法拉起应用。
版权声明: 本文为 InfoQ 作者【走向菜鸟的菜鸟】的原创文章。
原文链接:【http://xie.infoq.cn/article/81ff44295da5bcd5571cf3469】。文章转载请联系作者。









评论