当前位置: 首页 > news >正文

【HarmonyOS】H5 实现在浏览器中正常跳转 AppLinking 至应用

在 HarmonyOS 应用开发过程中,AppLinking 是一个重要能力。它能让网页与应用之间建立直达关系,用户点击网页链接时,系统可以优先拉起匹配的应用并在应用内展示相应的内容。这一机制极大地提升了跨场景的跳转体验,比如从营销页面、消息通知、社交分享链接直接跳转到应用的具体业务页面。

不过,当我们希望在 系统浏览器 或集成 ArkWeb 的应用内网页中触发 AppLinking 时,会遇到一些特殊的限制,需要在 H5 页面做额外的适配与处理,本文将围绕这点展开,并给出实际可运行的 H5 示例代码,代码中以华为商城AppLinking为例。


什么是 AppLinking

AppLinking 是 HarmonyOS 提供的一种应用间跳转能力。其核心思路是:
当用户在系统浏览器或 ArkWeb 集成的 WebView 中点击某个链接时,系统会判断是否有对应应用可以处理该链接:

  • 若有匹配的应用,系统会优先拉起目标应用,并在应用内打开对应的页面。

  • 若没有匹配的应用,则会继续在浏览器中展示该网页内容。

换句话说,AppLinking 是网页与应用的「桥梁」。

详细的配置和基础实现可以参考我的另一篇文章:【HarmonyOS 5】App Linking 应用间跳转详解_applinking-CSDN博客。


ArkWeb 对 AppLinking 的限制

在实际开发中,我们需要注意 ArkWeb 机制下的几个关键限制:

  1. 地址栏输入限制
    不能直接在浏览器地址栏中输入 AppLinking 地址来拉起应用。

  2. 相同域名限制
    如果当前网页的域名与 AppLinking 链接的域名相同,点击后不会拉起应用,而是继续在浏览器或 ArkWeb 中打开链接。这是为了保持用户浏览体验的连续性。

  3. 不同域名可触发跳转
    如果网页域名和 AppLinking 链接域名不同,系统才会优先通过 AppLinking 拉起目标应用。

因此,实际场景下,我们往往需要 为分享链接配置一个中转页面

  • 用户点击分享链接 → 打开一个「分享页」(H5 页面)

  • 分享页内部通过 a 标签JS 方式 触发 AppLinking 地址

  • 系统判断域名差异,进而拉起应用


H5 实现 AppLinking 跳转的方式

在 H5 页面中触发 AppLinking,常见有三种方式:

1. a 标签跳转

<a class="function_item" href="https://appgallery.huawei.com/app/detail?id=com.huawei.hmos.vmall">去应用市场下载</a>
<a class="function_item" href="https://www.huawei.com">打开应用</a>

2. window.open() 跳转

window.open("https://appgallery.huawei.com/app/detail?id=com.huawei.hmos.vmall")

3. window.location.href 跳转

window.location.href = "https://appgallery.huawei.com/app/detail?id=com.huawei.hmos.vmall"

这三种方式在实际使用中略有差异:

  • a 标签 是最直接的 HTML 方式,兼容性好,适合放在页面按钮上。

  • window.open() 会在新窗口中打开目标链接,适合需要保持原页面的场景。

  • window.location.href 会替换当前页面,适合「跳转即结束」的逻辑。


示例 H5 页面

下面是一个包含三种跳转方式的 H5 示例页面,包含两个按钮和一个 a 标签,可以直接运行验证:

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>HarmonyOS AppLinking H5 跳转示例</title><style>body { font-family: Arial, sans-serif; padding: 20px; }.btn { display: inline-block; margin: 10px 0; padding: 12px 20px; background-color: #007bff; color: #fff; border-radius: 8px; text-decoration: none; cursor: pointer;}</style>
</head>
<body><h2>HarmonyOS H5 跳转 AppLinking 示例</h2><!-- a 标签跳转 --><a class="btn" href="https://appgallery.huawei.com/app/detail?id=com.huawei.hmos.vmall">使用 a 标签跳转</a><!-- window.open() 跳转 --><button class="btn" onclick="openAppLink()">使用 window.open 跳转</button><!-- window.location.href 跳转 --><button class="btn" onclick="redirectAppLink()">使用 location.href 跳转</button><script>function openAppLink() {window.open("https://appgallery.huawei.com/app/detail?id=com.huawei.hmos.vmall");}function redirectAppLink() {window.location.href = "https://appgallery.huawei.com/app/detail?id=com.huawei.hmos.vmall";}</script>
</body>
</html>

http://www.lryc.cn/news/625627.html

相关文章:

  • HarmonyOS 中的 setInterval的基本使用
  • Android Coil 3拦截器Interceptor计算单次请求耗时,Kotlin
  • 进程通信:进程池的实现
  • Java 大视界 -- Java 大数据在智能物流无人配送车路径规划与协同调度中的应用
  • 【什么是非晶合金?非晶电机有什么优点?】
  • k8sday11服务发现(2/2)
  • Kubernetes 的 YAML 配置文件-kind
  • 在 Kotlin 中 使用泛型类和泛型函数
  • WRC大会精彩回顾 | NanoLoong机器人足球首秀青龙机械臂咖啡服务双线出击
  • 【论文阅读】DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • 【新启航】航空飞机起落架深孔型腔的内轮廓检测方法探究 - 激光频率梳 3D 轮廓检测
  • 主流 3D 模型格式(FBX/OBJ/DAE/GLTF)材质支持与转换操作指南
  • STranslate:一键聚合翻译+OCR,效率翻倍
  • CVPR 2025 | 具身智能 | HOLODECK:一句话召唤3D世界,智能体的“元宇宙练功房”来了
  • Chrome原生工具网页长截图方法
  • [Linux] 网络中的 `tun` 模式
  • 神经网络拆解:用Excel模拟手写数字识别
  • Chrome 插件开发实战技术文章大纲
  • 从密度到聚类:DBSCAN算法的第一性原理解析
  • 【数据可视化-93】使用 Pyecharts 绘制旭日图:步骤与数据组织形式
  • 从接口自动化测试框架设计到开发(三)主流程封装、返回数据写入excel
  • 传统艾灸VS七彩喜艾灸机器人:同样的艾香,多了4分“巧”
  • JetBrains系列产品-IDEA/PyCharm/GoLand自动生成方法返回值的快捷键,查看方法参数的快捷键。
  • 0819 使用IP多路复用实现TCP并发服务器
  • Java -- 用户线程和守护线程--线程同步机制
  • Java开发过程中实用的技术点(一)
  • LIA-X - 一张照片生成任意表情肖像动画视频 精准操控面部动作 支持50系显卡 一键整合包下载
  • 免费dll修复?缺少xxx.dll?【图文详解】Visual C++运行库安装?无法定位程序输入点于动态链接库?
  • VulKan笔记(九)-着色器
  • 机器学习--决策树2