目录

拉起指定应用概述

本章节主要介绍如何通过应用链接跳转的方式拉起指定应用。

从API 12开始,已不再推荐三方应用使用指定Ability方式(即显式Want)拉起其他应用。关于如何从指定Ability方式切换到指定应用链接方式,详见显式Want跳转切换应用链接跳转适配指导。

应用链接

应用链接是指可以将用户引导至应用内特定位置或相关网页的URL,常见的格式如下。更多关于应用链接格式与字段含义的说明,详见应用链接说明。

scheme://host[:port]/path

运作机制

  1. 目标应用在配置文件中注册自己的URL,并对外提供URL。
  2. 拉起方应用在跳转接口中传入目标应用的URL等信息。
  3. 系统接收到URL等相关信息,会寻找对应匹配项,并跳转至目标应用。

应用链接分类

按照应用链接的scheme以及校验机制的不同,可以分为Deep Linking与App Linking两种方式。

相比Deep Linking,App Linking具有更高的安全性和可靠性,用户体验更佳。推荐开发者将App Linking作为首选方案。

类型 App Linking(推荐) Deep Linking
实现方案 目标应用需要在module.json5中声明应用链接;同时需要向系统注册域名并通过域名认证。 目标应用需要在module.json5中声明应用链接。
链接格式 scheme必须为https。 scheme可以自定义。通常不为https、http、file,否则会拉起默认的系统浏览器。
是否可用于分享或直接在网页中访问 可以 不可以,需在代码中调用。
是否可以直接拉起目标应用 可以 可以,但不推荐使用,存在被仿冒风险。

Deep Linking与App Linking均可以使用openLink()接口实现,不同条件下的跳转效果如下。

该接口中的appLinkingOnly字段表示是否必须以App Linking的方式启动UIAbility,默认为false。appLinkingOnly为true一般只用于浏览器等应用。

应用链接类型 App Linking(推荐) Deep Linking
appLinkingOnly为false且目标应用已安装 直接跳转打开目标应用。 跳转目标应用(如果有多个符合条件的应用时,展示应用选择弹框)。
appLinkingOnly为false且目标应用未安装 跳转默认浏览器打开网页。 返回失败,系统不跳转,由应用自行处理;当前会展示“链接无法打开”弹框。
appLinkingOnly为true且目标应用已安装 直接跳转打开目标应用。 返回失败,系统不跳转,由应用自行处理。
appLinkingOnly为true且目标应用未安装 返回失败,系统不跳转由应用自行处理。 返回失败,系统不跳转,由应用自行处理。

通过App Linking方式拉起指定应用的示意图如下:

通过Deep Linking方式拉起应用时,如果存在多个符合条件的应用,需要用户选择后方可跳转到指定应用。示意图如下:

常见问题

[h2]跨应用拉起UIAbility时,如何感知跳转弹框的用户选择结果

通过startAbility方式或Deep Linking方式拉起其他应用的UIAbility时,系统会弹出“是否允许跳转”的确认弹框,由用户进行选择。可通过CompletionHandler感知用户的选择结果。

[h2]应用间跳转时如何取消“是否允许跳转”的确认弹框

通过openLink或startAbility拉起其他应用时,为了防止应用的恶意跳转,系统会弹出“是否允许跳转”的确认弹框,由用户进行确认。不支持开发者取消该弹框。

“是否允许跳转”的确认弹框实际显示的提示语由系统定义,比如“xx想要拉起xx”,此处仅为举例。

[h2]应用间跳转时如何取消“暂无可用打开方式”弹框

当通过openLink或startAbility隐式启动其他应用时,如果没有找到匹配的应用,系统会弹框提示“暂无可用打开方式”。