【HarmonyOS NEXT】解决微信浏览器无法唤起APP的问题_企业微信跳转提示暂无可用打开方式
1. 背景
在部分场景下,用户在微信内访问网页时需要跳转到 APP 使用完整服务,微信提供了“微信开放标签”以满足微信内网页跳转到 APP 的需求。 微信内网页跳转 APP 功能已向全体开发者开放,当用户访问已认证服务号的 JS 接口安全域名时,可以通过“微信开放标签”打开符合条件的 APP 。
跳转APP:wx-open-launch-app
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#跳转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