微信开放标签wx-open-launch-app报错launch:fail_check fail无法打开弹窗

1,137 阅读2分钟

场景

最近我们的app在测试安卓版本的时候,给我提了个bug。

分享A网页,只能在A网页唤醒app,从A切换到如BCD页面的时候都无法唤醒

在初步排查后,发现安卓端微信调用开放标签wx-open-launch-app唤醒时报了一个错,错误代码launch:fail_check fail,查阅文档后可知‘校验App跳转权限失败,请确认是否正确绑定AppID

解决过程

  1. 因为我们ios版本已经上线半年了,并且第一时间去查验后并无此异常,所以直接排除掉代码本身的问题。

  2. 然后我再次去查阅了微信官方文档,并且通过手机以及开发者工具等等去定位了问题,发现所有配置都正常,但报错appid错误,通过工具也看了,appid各种参数绝对是正确的。

  3. 再此期间,比较观察了安卓、ios、微信、开发者工具,初步界定是安卓版本的微信bug,便把目光放向了安卓微信。

  4. 对于安卓微信的bug看了很久都无能为力,之后便去调研了知乎、小红书、哔站等等第三方平台,发现它们的功能正常,然后这时我就把目光放到了我们的项目设计上面。

  5. 研究的几个网站,除了知乎是使用的白名单api launchapp,其它哔站、小红书与我们一样使用的开发标签wx-open-launch-app

  6. 通过bug复现场景:切换影响报错,刷新页面正常。

    我隐约察觉出是单页面的问题,并且细查了第三方平台的实现方式后,发现它们确实与我们不太一样,它们使用的是多页面。

    我感觉自己接近了真相,困扰了我三天的bug好像真正有了头绪...

  7. 之后我翻遍了全网单页面应用在微信之中的相关文章,终于在周五下班前一小时找到了一篇2017年的文章。

    文章中说到,目前(2017年)安卓微信客户端不支持H5新特性pushstate,在使用history路由模式的网页中,切换页面会导致微信签名失败。

    这一瞬间,我就知道问题在哪了。

解决方案

页面切换的时候,监听相关事件,每次都去重新调用服务端接口获取微信签名,重新注册wx事件

2017年的bug2022年了竟然还在

关于微信唤醒app前置环境配置,可以参考我之前的文章