
回复
本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。
App Linking 是一种基于 HTTPS 链接的应用间跳转方式,它通过域名校验机制,可以安全可靠地打开目标应用,无论该应用是否已安装。这种方式特别适合需要安全性和用户体验的应用场景,例如扫码直达、社交分享、沉默唤醒和广告引流等。
App Linking 是 HarmonyOS 特有的应用间跳转方式,它基于 Deep Linking 技术发展而来,但增加了域名校验环节。通过域名校验,App Linking 可以帮助用户消除歧义,识别合法归属于域名的应用,使链接更加安全可靠。
App Linking 在 Deep Linking 基础上增加了域名校验环节,具体原理如下:
applinking.json
文件,声明应用的 APP ID。1. 在 AGC 控制台开通 App Linking 服务
applinking.json
文件,并配置应用的 APP ID。applinking.json
文件放在服务器根目录下的 .well-known
目录下。import { AbilityConstant, UIAbility, Want } from '@ohos.app.ability.common';
import { url } from '@ohos.arkts';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
const uri = want?.uri;
if (uri) {
const urlObject = url.URL.parseURL(want.uri);
const action = urlObject.params.get('action');
if (action === "showall") {
// 跳转到应用内的“所有节目”页面
}
}
}
}
示例 1:App Linking 接入示例
import { common } from '@ohos.app.ability.common';
export default class EntryAbility extends common.UIAbility {
onWindowStageCreate(windowStage: common.WindowStage) {
const context = this.getContext(this) as common.UIAbilityContext;
const link: string = "https://www.example.com/programs?action=showall";
const options: common.OpenLinkOptions = {
appLinkingOnly: true // 仅使用 App Linking 跳转
};
context.openLink(link, options);
}
}
示例 2:App Linking 跳转示例
import { common } from '@ohos.app.ability.common';
import { url } from '@ohos.arkts';
export default class EntryAbility extends common.UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
const uri = want?.uri;
if (uri) {
const urlObject = url.URL.parseURL(want.uri);
const action = urlObject.params.get('action');
if (action === "showall") {
// 跳转到应用内的“所有节目”页面
}
}
}
}
总结:
使用 App Linking 实现应用间跳转是一种安全可靠的方式,它能够为用户提供一键直达的体验。我们需要按照步骤配置 App Linking 服务,并在目标应用中处理传入的链接,才能实现 App Linking 功能。