1. 背景
在部分场景下,用户在微信内访问网页时需要跳转到 APP 使用完整服务,微信提供了“微信开放标签”以满足微信内网页跳转到 APP 的需求。 微信内网页跳转 APP 功能已向全体开发者开放,当用户访问已认证服务号的 JS 接口安全域名时,可以通过“微信开放标签”打开符合条件的 APP 。
跳转APP:wx-open-launch-app
用于页面中提供一个可跳转指定App的按钮。注意:Android/鸿蒙平台通过开放标签跳转App,App必须接入微信OpenSDK,详细参见文档《Android微信OpenSDK接入指南》 鸿蒙微信OpenSDK接入指南。
补充说明:1、必须真机才能渲染该标签;2、文字链无法拉起该标签
1.1 问题
我们的网页已经接入了wx-open-launch-app,但是
在使用鸿蒙微信打开网页通过使用实现应用间跳转唤起APP时,会提示暂无可用打开方式,但是尝试使用系统浏览器、QQ浏览器、UC浏览器时通过Deep Linking(scheme)又可以唤起,反复检查module.json5中的skills标签配置,未发现任何问题
2. 解决思路
开始怀疑是不是微信有BUG,或者鸿蒙版微信有白名单机制,但是尝试了微博和小红书,是可以唤起APP的,于是开始尝试在各种鸿蒙论坛和说说引擎中搜索,未发现有人遇到此类问题,o(╥﹏╥)o,直到我把微信的鸿蒙应用开发手册反复看了十遍,直到看到一句话【微信拉起App时,App如何接受来自微信的数据】
3. 尝试解决
在主项目的module.json5 中的actions 增加wxentity.action.open
{
"module": {
// ...
"abilities": [
{
// ...
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home",
"wxentity.action.open"
]
},
{
"actions": [
// actions不能为空,actions为空会造成目标方匹配失败。
"ohos.want.action.viewData"
],
"uris": [
{
// scheme必选,可以自定义,以link为例,需要替换为实际的scheme
"scheme": "link",
// host必选,配置待匹配的域名
"host": "www.example.com"
}
]
} // 新增一个skill对象,用于跳转场景。如果存在多个跳转场景,需配置多个skill对象。
]
}
]
}
}
run起来,✿✿ヽ(°▽°)ノ✿,可以唤起了
4. 参数获取问题
通过微信浏览器H5唤起,和非微信浏览器onNewWant中接收到的scheme uri 位置有所不同,微信这货额外包装了一层
非微信浏览器唤起
微信浏览器唤起
此问题可通过微信SDK获取
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/APP_GET_EXTINF.html#鸿蒙-示例代码
5. 参考资料
关于鸿蒙拉起指定应用的资料可参考这里
鸿蒙应用间跳转:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/inter-app-redirection
鸿蒙应用开发手册:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/ohos.html