HarmonyOS 鸿蒙Next中Deep Linking和App Linking有什么区别?

HarmonyOS 鸿蒙Next中Deep Linking和App Linking有什么区别? 各位大佬们有深入的研究么

10 回复

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加密+域名校验,安全性高
未安装处理 直接返回错误码或弹框提示失败 跳转默认浏览器打开对应网页
用户选择弹框 存在“是否允许跳转”弹框 直接拉起无弹框(需配置参数)

二、适用场景

  1. Deep Linking

    • 需要快速验证跳转逻辑的临时方案
    • 内部应用间跳转(无安全风险场景)
  2. App Linking

    • 需要高安全性的公开场景(如社交分享、广告引流)
    • 跨设备跳转或应用市场导流
    • 用户未安装目标应用时仍需访问内容(如H5引导页)

三、技术实现差异

1. 接口调用配置差异
通过openLink接口实现时,关键参数appLinkingOnly决定校验方式:

   let options: openLink.OpenLinkOptions = {
     appLinkingOnly: true, // true表示强制App Linking校验
     parameters: { key: 'value' } // 可选参数
   };
  1. 目标应用配置差异
  • 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]。

Deep Linking 更灵活但不够安全,适合内部使用;App Linking 更安全、体验更好,适合公开场景

找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配置数字资产链接并部署验证文件
回到顶部