【HarmonyOS 5】App Linking 应用间跳转详解
目录
什么是 App Linking
使用场景
工作原理
如何开发
1.开通 App Linking
2.确定域名
3.服务端部署 applinking.json 文件
4.AGC绑定域名
5.项目配置
6.组装聚合链接
7.解析聚合链接中的参数
其他
如何获取应用ID
如何在应用未安装时点击链接跳转至应用市场
什么是 App Linking
App Linking 是一款创建跨平台的深度聚合链接。通过为用户提供无缝的内容浏览体验,提升用户转化率。
- 若用户已安装应用,点击点击链接后将直达应用内指定页面。
- 若未安装,且已配置跳转应用市场,则跳转应用市场进行下载,待安装完成后用户首次打开应用,仍将跳转至该页面(可查看文章结尾如何配置)。如果未配置跳转应用市场,则自动打开浏览器加载对应的网页内容。


使用场景
扫码直达、短信链接直达、社交平台卡片分享等场景。
工作原理
如何开发
开发前注意事项:使用 App Linking 需使用手动生成签名,自动签名将无法启动应用。
1.开通 App Linking
- 登录AppGallery Connect,点击“我的项目”。
- 在项目列表中打开对应项目。
- 在左侧导航栏中选择“增长 > App Linking”,进入App Linking页面,点击“立即开通”。
2.确定域名
在配置前需确定域名,并确保域名完成https配置且能正常访问,后续在 AGC 与项目中需进行相关配置。
3.服务端部署 applinking.json 文件
在服务端部署 applinking.json 文件至指定目录,这里我们手动创建即可,确保能通过我们配置的域名地址:https://域名/.well-known/applinking.json 访问到 applinking 配置,如何获取应用ID可查看文章末尾。
{
"applinking": {
"apps": [
{
"appIdentifier": "你的应用id"
}
]
}
}
4.AGC绑定域名
在第 1 步开通 App Linking 后,选择“应用链接-创建”,填入域名地址进行发布,发布后,若第 3 步的配置文件可正常访问,等待几分钟后看到“成功”状态,则代表域名配置成功。若出现其他错误状态,需检查配置文件是否可被访问。
5.项目配置
进入项目的 entry 模块下的 module.json5 文件,新增 App Linking 的 skills 配置。
示例代码:
{
"entities": [
// entities必须包含"entity.system.browsable"
"entity.system.browsable"
],
"actions": [
// actions必须包含"ohos.want.action.viewData"
"ohos.want.action.viewData"
],
"uris": [
{
// scheme须配置为https
"scheme": "https",
// host须配置为关联的域名,替换为你AGC配置的域名
"host": "www.eeeo.cc",
// path可选,表示域名服务器上的目录或文件路径,例如www.example.com/path1中的path1
// 如果应用只能处理部分特定的path,则此处应该配置应用所支持的path,避免出现应用不能处理的path链接也被引流到应用中的问题,替换为你的二级path,用于精确分流
"path": "share"
}
],
// domainVerify须设置为true
"domainVerify": true
}
6.组装聚合链接
上述配置中,path用于精确分流,可用于指定二级地址,当前项目中配置的path为share,即当我们在鸿蒙设备中点击链接 https://www.eeeo.cc/share 后会优先启动应用,当我们需要传递参数时,可使用 ? + & 的形式拼接 KeyValue 即可。
https://www.eeeo.cc/share?pageId=2025&channel=web
7.解析聚合链接中的参数
通过聚合链接启动应用后,参数会进入到 Ability 的 onCreate 生命周期的 Want.uri 中,若应用已经启动,则会进入到 onNewWant 生命周期的 Want.uri 中。此时我们解析 uri 中的 KeyValue 即可。
示例代码如下:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { url } from '@kit.ArkTS';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// 从want中获取传入的链接信息。
// 如传入的url为:https://www.example.com/programs?action=showall
let uri = want?.uri
if (uri) {
// 从链接中解析query参数,拿到参数后,可根据自己的业务需求进行后续的处理。
let urlObject = url.URL.parseURL(want?.uri);
let pageId = urlObject.params.get('pageId')
let channel= urlObject.params.get('channel')
}
}
}
其他
如何获取应用ID
登录AppGallery Connect,点击“我的项目”,若已创建项目,可直接在首页查看到应用ID。若未创建项目,手动创建后则会自动生成。
如何在应用未安装时点击链接跳转至应用市场
项目的 module.json5 配置完 AppLinking 的 skills 后,等待应用上架,上架后前往 AGC 配置AppLinking 域名的地方,点击“直达应用市场”的选项,开启直达应用市场即可。