关于微信开放标签 wx-open-launch-app 点击报错,提示“launch:fail_check fail"的问题排查
昨晚生产发完版,十一点一到,开启静音和勿扰,美美睡一觉,早上醒来一看,坏了,群里发了一堆消息,经理晚上一点多说我做的跳转 app
的功能怎么不能用了,吓得我直接弹射起步,立马洗漱完去公司。
到了公司,立马开电脑看看是什么地方影响到了,按理说这次发版我也没有修改这部分的代码逻辑,前段时间还是可以跳转的,怎么就突然不行了,首先看了下是不是wx
的 sdk
有没有引入,有没有配置开放标签。
关于如何配置开放标签,请参考 vue中如何使用wx内置组件 wx-open-launch-app / wx-open-launch-weapp。
这不是很完美嘛,难道是我在页面中没有配置?但是经过排查发现,这部分的代码我也写了,所以是正常的初始化了,没辙了,只能根据报错去百度一番,发现有不少人遇到这个问题啊,不过回答都是几年前的,但是没有搜索到最近的文章,只能根据这些文章实验一番,有人说是因为公众号和开放平台配置的安全域名不一致,有人说是因为需要配置顶级域名,有人说是因为公众号appid
绑定的不一致,我遇到的问题应该和上述不一致,毕竟我一个月前试了还是正常的,所以我没改代码,到底是哪里影响的呢,难道是微信开发标签更新了?去看了一眼,没什么变化呀,正当我一筹莫展的时候,我用苹果手机试了下,居然是正常的!这让我看到了一点希望,难道是安卓手机的问题,顺着这个思路,我又百度了一番,终于找到了一篇稍微有用的帖子,关于 wx-open-launch-app 跳转失败,提示 launch:fail 的解决方案,根据这个思路,我检查了一下每次初始化时返回的签名,发现只有第一次调用返回了,之后进入其他页面也没有返回,原来是这篇帖子中,init方法判断if (state === 'READY') return true
被return
了,因为状态已经被记录为READY
了,导致当前页面没有初始化wx的sdk,后已将判断和记录的值进行了修改。
export function ready(type) {
readyStateMap[type] = `READY:${location.href.split('#')[0]}`
}
if(state === `READY:${location.href.split('#')[0]}`) return true
不过看这篇帖子要笑死我了,这暴躁老哥。