HarmonyOS鸿蒙Next中自带浏览器无法使用schema+host(deep link)方式直接拉起app,在IOS是可以的,需要分享链接给其他人,可以直接点击链接拉起app,当前无法做到
HarmonyOS鸿蒙Next中华为自带浏览器无法使用schema+host(deep link)方式直接拉起app,在IOS是可以的,需要分享链接给其他人,可以直接点击链接拉起app,当前无法做到
【背景知识】
应用间跳转可以通过DeepLink方式达成,包括使用Web组件或者默认浏览器实现应用间的跳转。
【解决方案】
-
为了能够支持被其他应用访问,目标应用需要在
module.json5
配置文件中配置skills
标签。其中,uri
字段的scheme
的取值支持自定义,可以定义为任意不包含特殊字符、非ohos开头的字符串。"uris": [ { // scheme尽量做到唯一 ,仅设置此协议头就可以跳转 "scheme": "deeplinkdemo", // host不与其他应用相同,这样可以减少冲突 "host": "www.minetest.com" } ]
-
Web组件需要跳转DeepLink链接应用时,可通过拦截回调
onLoadIntercept
中对定义的事件进行处理,实现应用跳转。import web_webview from '@ohos.web.webview'; import { common } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; @Entry @Component struct WebPage { controller: web_webview.WebviewController = new web_webview.WebviewController() build() { Column() { Web({ src: $rawfile('local.html'), controller: this.controller }) .onLoadIntercept((event) => { const url: string = event.data.getRequestUrl(); if (url === 'deeplinkdemo://www.minetest.com') { (getContext() as common.UIAbilityContext).openLink(url) .then(() => { console.log('openLink success'); }).catch((err: BusinessError) => { console.error('openLink failed, err:' + JSON.stringify(err)); }); return true; } // 返回true表示阻止此次加载,否则允许此次加载 return false; }) } } }
-
浏览器或Web组件实现应用间的跳转,可加载前端页面代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>测试跳转页面</title> <script> function goToLink() { window.open('deeplinkdemo://www.minetest.com') } </script> </head> <body> <div align="center"> <button type="button" id="btn_navi" onclick="goToLink()" style="width:400px; height:300px">跳转我的测试app</button> </div> </body> </html>
【总结】
应用想要响应Deeplink拉起,需要在module.json5
配置文件中配置skills
标签,这样才能匹配到。如果未匹配到应用,可以通过如下几个方面排查:
- Deeplink链接的scheme协议头必须与对应应用配置的scheme保持一致;
- 浏览器实现应用间跳转需要注意scheme协议头的大小写;
- 检查应用
actions
标签是否配置了"ohos.want.action.viewData"。
更多关于HarmonyOS鸿蒙Next中自带浏览器无法使用schema+host(deep link)方式直接拉起app,在IOS是可以的,需要分享链接给其他人,可以直接点击链接拉起app,当前无法做到的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
参考一下AppLink,
App Linking Kit简介-App Linking Kit(应用链接服务)-应用服务 - 华为HarmonyOS开发者
重点是在AGC上配置这个,还可以结合二维码直达。游览器链接是能使用的。
是可以拉起的,看看这篇帖子:
[https://developer.huawei.com/consumer/cn/forum/topic/0201182989214909157?fid=0109140870620153026](https://developer.huawei.com/consumer/cn/forum/topic/0201182989214909157?fid=0109140870620153026)
鸿蒙Next中浏览器不支持直接通过schema+host方式拉起App,这是系统安全策略限制。鸿蒙采用更严格的URI校验机制,需要配置正式的关联域(Associated Domains)并通过系统认证。目前可行的替代方案是使用鸿蒙官方推荐的AppLink方式,需要在config.json中声明"uriFilter"字段并配置HTTPS域名验证。Web跳转需满足:1)目标App已安装;2)域名已通过华为验证;3)使用https协议。
在HarmonyOS Next中,deep link的实现方式与Android和iOS确实存在差异。针对您提到的问题,以下是关键点说明:
-
HarmonyOS Next目前不支持传统的schema+host方式的deep link直接拉起应用,这是系统层面的设计差异。
-
推荐使用HarmonyOS的"App Linking"方案替代:
- 需要在AppGallery Connect配置关联域名
- 使用华为提供的专用格式链接(以https开头)
- 需要集成HMS Core的App Linking SDK
- 临时解决方案: 可以尝试在链接中增加intent参数,格式示例:
https://example.com/path?intent=scheme://host/path#Intent;package=your.package.name;end
- 注意事项:
- 需要确保目标应用已安装
- 浏览器版本需要较新
- 应用需要声明相关权限
建议检查应用是否按照HarmonyOS的最新规范进行了配置,同时确认使用的浏览器版本是否支持相关功能。