IOS微信H5config失败

764 阅读2分钟

问题:

近日做微信H5时出现一个问题:IOS下微信wx.config失败,安卓成功。

现象:

楼主对比过安卓跟IOS下获取签名的参数,一模一样

经过测试发现一个神奇的现象:在ios下第一次打开页面会config失败,但点击微信的刷新按钮刷新一下页面,刷新后的页面居然config成功了!!!

因为我这个H5是经过授权链接跳转过来的,于是猜测:跟这个跳转过程有关,于是百度~

果然发现微信内嵌浏览器在iOS和安卓下的表现存在不同:在安卓下,签名需要的url是当前页面的url,但在iOS下,微信需要的是入口URL,而不是当前页面的URL,具体参考微信 jssdk 签名错误invalid signature的解决方法

因此,如果H5页面不是经过授权跳转过来,而是直接打开H5本身的链接,因为没有页面跳转,入口URL=当前页面URL,就可以config成功

尝试解决:

由于此授权对业务有作用,不能去掉,于是楼主改用授权链接去获取签名(之前是window.location.href.split('#')[0]),结果还是失败。。。

最后解决办法

image.png

没错,简单粗暴,如果经过授权链接跳转过来,url中没有refresh参数,我就强行刷新一下页面并加上refresh参数,刷新后就只是一个单纯的无跳转的普通的H5页面了,就可以config成功~~ 而刷新后url中有refresh参数,就不做处理

这个刷新的时机可以自己把握,beforeCreate/created回调应该也是可以的,直接在body标签顶部插入这个代码应该也ok。这是vue,如果是react也是同理