HarmonyOS 鸿蒙Next H5拉起app的时候怎么判断是否可以拉起app
HarmonyOS 鸿蒙Next H5拉起app的时候怎么判断是否可以拉起app
如果在项目中则使用startAbility打开deepLink进行拉起应用,如果在浏览器中打开H5页面,则绑定点击事件,点击按钮后window.open(deepLink)进行跳转;
实现步骤:
1:通过onLoadIntercept拦截前端H5请求,进行url判断
2:检测url类型,是否类型正确
3:使用bundleManager.canOpenLink检测是否可以打开相关应用
文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/canopenlink-V5
4:已安装应用则拉起 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/deep-linking-startup-V5
5:未安装应用跳转应用市场进行下载 被起方需配置: 浏览器支持Deeplink链接的打开能力。应用想要响应Deeplink拉起,需要注册viewData action和scheme+host,这样才能匹配到。如果有多个应用注册了相同的scheme+host,就会拉起应用选择框,让用户选择某个应用。 Deeplink响应的声明,需要在module.json5文件的接收Ability中skills项中增加action和uris内容:
"skills": [
{ …
“actions”: [ “ohos.want.action.viewData” // 声明Deeplink接收的Action,这个是固定的
…
],
“uris”: [ { “scheme”: “store”, // scheme尽量做到唯一 ,仅设置此协议头就可以跳转
“host”: “test.xxx.com” // host不与其他应用相同,这样可以减少冲突
}
…
]
…
}
]
需要注意deeplink链接的scheme协议头必须网页拉起的链接的应用配置的保持一致。 另外浏览器不会对deeplink链接做任何解析或处理,只会原封不动的传递给拉起的应用。因此第三方应用只需要自己的网页端和应用端协商好url规则,自己去做解析打开对应页面即可。
<!DOCTYPE html>
<html>
<head>
<meta charset=“utf-8”>
<title>测试页面</title>
<script>
function goToLink() {
window.open(‘store://appgallery.huawei.com/app/detail?id=C1229502635594278976’)
}
</script>
</head>
<body>
<div align=“center”>
<button type=“button” id=“btn_navi” onclick=“goToLink()”>跳转应用市场</button>
</div>
</body>
</html>
在HarmonyOS 鸿蒙Next系统中,当H5页面尝试拉起应用时,判断是否可以成功拉起应用,可以通过以下步骤实现:
-
URL Scheme判断:
- 在H5页面中,通过URL Scheme(如
iyingyong://
)来尝试拉起应用。 - 在拉起操作之前,可以使用JavaScript的
window.open
方法并传入对应的Scheme URL。
- 在H5页面中,通过URL Scheme(如
-
能力检测:
- 在H5页面中,可以使用
bundleManager.canOpenLink
接口来检测当前设备是否能打开指定的URL Scheme。 - 如果返回值为
true
,则表示可以拉起应用;如果为false
,则表示无法拉起。
- 在H5页面中,可以使用
-
配置检查:
- 确保被拉起的应用在
module.json5
文件中已正确配置了支持的Scheme协议。 - 同时,在拉起方的
module.json5
文件中也需要配置可能用到的querySchemes
字段。
- 确保被拉起的应用在
如果遵循以上步骤仍然无法判断或拉起应用,可能是由于系统限制、应用配置错误或版本不兼容等原因导致。此时,建议检查相关配置和系统日志,以获取更详细的错误信息。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。