微信分享踩过的坑

微信分享在SPA网页中配置的分享会失效

之前主要是在iPhone上面测试H5网页分享出去的效果,所以一直也没有发现单页应用在android上pushState一次之后就分享信息就会失效。
JSSDK不知道什么时候更新的官方信息:

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

所以如果你用的vue router或者react router的话,在pushState页面路径变化之后,可以在判断当前页面是微信浏览器并且是android手机的情况下,重新发起获取微信配置信息,然后调用wx.config(),这样就没问题了。

1
2
3
4
5
6
7
8
// react router历史记录
const history = syncHistoryWithStore(browserHistory, store);

history.listen((location) => {
// 判断android下面 每次URL变化时重新获取wxJSConfig信息
if (isWeixin() && isAndroid())
window.getWXJSConfigInfo();
});

微信分享更改规则,网页必须分享当前页面的URL

项目里有一个用户登录之后在微信中分享会分享另外一个域名的页面,这个在前两天还在用的功能,突然就出了bug,测试了好久,一直在找签名和自己代码的问题,最后偶然间发现是微信的分享规则变化,改成分享当前页面URL后,就可以了。
吐槽一下微信的分享规则越来越封闭了,而且开启了分享的debug之后并没有提示出明确的出错信息,导致调试走了很多弯路。
官方链接:
JSSDK自定义分享接口的策略调整