微信唤起APP流程及注意事项

2,042 阅读3分钟

本篇文章通过之前唤起经历整理而来,可能会比较零散,望多包涵。

基本配置

  1. 登录公众平台(包括订阅号、服务号、企业号)配置JS接口安全域名
    • 设置域名
    • 上传说明中的文件到服务器根目录(上传位置需要根据配置的域名做调整)
  2. 登录微信开放平台登记域名和APP应用的绑定关系(只能关联一个
    • 如果没有账号,那就先注册,新建APP审核并上架成功
    • 微信开放平台-管理中心-公众号详情-接口信息-添加关联设置
  3. 在 H5 中加逻辑
    • 具体逻辑见:微信H5唤起App解决方案
    • 提交至环境(需要和上面配置的服务器一致,如果要发布到测试环境,需要将测试环境的地址按照上面的步骤也配置一下)

注意事项

  • 因为绑定JS接口安全域名和APP应用关系(第1、2条)有次数限制,所以要先整理好再修改。
  • 开放平台的域名一个月只能改 3 次。所以,请第一次一定要绑测试环境,测试完全 ok 再换成正式环境。
  • 写逻辑时需要注意 appid 和 extinfo 字段的填写。前者是唤起 app 的 appid(在微信开发者平台上面查看),后者是跳转到指定页面的信息。extinfo 字段如果不传可能会引起安卓唤起失败,但是却显示 success。

Q&A

这是在写的时候遇到的一些坑,这里也记录一下:

  1. 一个公众号下面有什么办法可以绑定多个关联吗?背景:我们 app 分享到微信的链接会有两种,分别在两个域名下。希望点击链接后打开 H5,在 H5 点击后中能唤醒 app。
    不能。一个公众号只能绑定一个域名。 
    
  2. 现在这里填的是 abc.com,我想在 xy.abc.com 和 www.abc.com 里面唤起 app。这样设置对吗?
    目前(2021-7-6 左右)并不支持。需要设置 xy.abc.com 或者 www.abc.com 才能生效。 
    
  3. 我想问下,大家有没有遇到过安卓机显示 success 但是 app 没起来的问题呀?iOS 已经成功唤起(不论应用是否在后台),安卓这边如果应用没有在后台没有运行就唤不起来。
    考虑 extinfo 字段是否正确传参。这需要和 app 端进行合作。app 端需要正确接受字段并跳转相应路由。 
    
  4. 样式不生效怎么办啊?
    参考这篇文章:[微信开放标签 wx-open-launch-app 样式设置技巧](https://developers.weixin.qq.com/community/develop/article/doc/0006e4bdccc9d83f8fba292a45b813) 
    
  5. 微信开发者工具中,config 中设置了 openTagList,但是打印出来 jsApiList 为空?
    考虑获取的公众号配置是否为测试号,测试号没有获取权限。让后端直接用正式号的信息反回配置信息。 
    
  6. 为什么我这边进入error事件的时候,里面的错误信息是空的,非常不方便开发调试,还请帮忙解答,谢谢。
    alert(JSON.stringify(e.detail, Object.getOwnPropertyNames(e.detail))) 
    
  7. 一直报鉴权失败是什么原因?
    考虑两个原因:传入的 url 格式不对、后端的缓存没做好。对于前者,是否 encode 需要看后端的实现方式。
    
  8. 微信中直接打开h5链接不能唤起相关的app,使用分享卡片链接或者扫码就能唤起相关的app? image-20220525180002565.png

欢迎大家补充 👏👏👏


参考文章:
js接口安全域名配置二级域名后,公用的三级域名可以生效嘛?
H5启动app,配置都正确,提示launch:fail_check fail,是什么原因?
使用网页跳转到APP报launch:fail_check fail错误,确认绑定appid没问题?
JS-SDK说明文档