HarmonyOS 鸿蒙Next中Deep Linking和App Linking有什么区别?
HarmonyOS 鸿蒙Next中Deep Linking和App Linking有什么区别? 各位大佬们有深入的研究么
Deep Linking:支持自定义 scheme(如 myapp://path),但通常不能使用 https、http 或 file 协议,否则会触发系统默认浏览器。
App Linking:强制使用 https 协议,需通过域名校验(需在应用商店注册域名),安全性更高
新项目优先选择 App Linking,历史项目若需快速兼容可保留 Deep Linking,但需注意安全风险
更多关于HarmonyOS 鸿蒙Next中Deep Linking和App Linking有什么区别?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
协议与安全性区别
Deep Linking支持自定义scheme,无需域名校验,但是存在被仿冒风险:
// module.json5中声明
"skills": [{
"actions": ["ohos.want.action.viewData"],
"uris": [{
"scheme": "myapp", // 自定义协议
"host": "shop"
}]
}]
App Linking强制使用HTTPS协议,需在应用商店完成域名校验,安全性更高。
未安装应用处理
Deep Linking目标应用未安装时直接返回错误码或弹窗提示,用户体验中断。
App Linking未安装时跳转默认浏览器打开网页,安装后首次启动自动跳转指定页面。
跳转流程差异
场景 | Deep Linking | App Linking |
---|---|---|
目标应用已安装 | 弹出应用选择框(多应用匹配时) | 直接跳转目标应用 |
目标应用未安装 | 返回错误码 | 跳转浏览器打开指定页面 |
安全性校验 | 无 | HTTPS+域名校验 |
适用场景不同
Deep Linking适合简单内部跳转场景;App Linking适合跨应用跳转、分享场景、需保障安全性的场景。
代码调用对比
// Deep Linking调用示例
import { openLink } from '@kit.ArkUI';
openLink({ url: 'myapp://shop/location?address=xxx' });
// App Linking调用示例
openLink({
url: 'https://example.com/path',
appLinkingOnly: true // 强制域名校验[4,10]
});
一、核心差异对比
特性 | Deep Linking | App Linking(推荐) |
---|---|---|
协议 | 支持自定义Scheme(如myapp://path ) |
强制使用HTTPS协议 |
域名校验 | 不需要域名认证 | 需通过应用商店域名认证 |
安全性 | 存在仿冒风险 | 通过HTTPS加密+域名校验,安全性高 |
未安装处理 | 直接返回错误码或弹框提示失败 | 跳转默认浏览器打开对应网页 |
用户选择弹框 | 存在“是否允许跳转”弹框 | 直接拉起无弹框(需配置参数) |
二、适用场景
-
Deep Linking
- 需要快速验证跳转逻辑的临时方案
- 内部应用间跳转(无安全风险场景)
-
App Linking
- 需要高安全性的公开场景(如社交分享、广告引流)
- 跨设备跳转或应用市场导流
- 用户未安装目标应用时仍需访问内容(如H5引导页)
三、技术实现差异
1. 接口调用配置差异
通过openLink
接口实现时,关键参数appLinkingOnly
决定校验方式:
let options: openLink.OpenLinkOptions = {
appLinkingOnly: true, // true表示强制App Linking校验
parameters: { key: 'value' } // 可选参数
};
- 目标应用配置差异
-
Deep Linking:仅需在
module.json5
中声明uri
规则:"skills": [{ "actions": ["ohos.want.action.viewData"], "uris": [{ "scheme": "myapp", // 自定义Scheme "host": "path" }] }]
-
App Linking:除声明
uri
外,还需完成域名认证(需提交至应用市场审核)[X]。
四、跳转行为对比(基于appLinkingOnly
参数)
场景 | Deep Linking | App Linking |
---|---|---|
目标应用已安装 | 展示选择弹框(多应用匹配时) | 直接跳转 |
目标应用未安装 + false |
提示“链接无法打开” | 跳转浏览器打开网页 |
目标应用未安装 + true |
不处理(返回错误) | 不处理(返回错误) |
五、推荐策略
- 安全优先场景:优先使用App Linking,避免恶意仿冒风险[X]。
- 快速验证场景:使用Deep Linking简化开发流程。
- 跨平台兼容性:若需兼容未安装场景,App Linking的浏览器跳转能力更优[X]。
找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
对于一般开发者而言没啥区别,哪个方便用哪个。如果是高级玩家建议用 APP linking更安全。
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
AppLinking安全性更高但是需要进行配置 DeepLinking就不需要配置 但是可能会存在劫持等安全问题
Deep Linking和App Linking在鸿蒙Next中的区别如下:
Deep Linking用于应用内特定页面跳转,通过URI Scheme或Intent实现,支持跨应用场景,但需应用已安装。
App Linking是华为提供的云深度链接服务,基于HTTP/HTTPS协议,可生成短链接。支持未安装应用时跳转应用市场下载页面,已安装则直接打开指定页面。提供数据统计和链接管理功能。
核心差异:App Linking集成云端能力,支持未安装场景和数据分析;Deep Linking仅限设备端已安装应用间的跳转。
Deep Linking和App Linking在HarmonyOS Next中的核心区别在于验证机制和跳转方式:
1. Deep Linking
- 使用自定义URI scheme(如
myapp://details?id=123
) - 无需域名验证,开发更灵活
- 存在安全风险:可能被恶意应用劫持或伪造
- 系统无法验证目标应用是否已安装,可能导致跳转失败
2. App Linking
- 基于HTTPS标准协议(如
https://example.com/details?id=123
) - 需通过
.well-known/assetlinks.json
域名文件验证应用所有权 - 系统级安全保障:自动过滤未授权调用
- 支持未安装应用时跳转至应用市场(Fallback机制)
技术建议
- 对安全性要求高的场景(如支付、隐私数据)优先选用App Linking
- 内部应用或快速原型开发可考虑Deep Linking
- App Linking需提前在AGC配置数字资产链接并部署验证文件