入坑javascript
在微信网页开发中,使用JSSDK自定义分享内容。按官方文档去弄,而后出现的问题是:IOS手机自定义分享正常,而安卓手机自定义分享不生效,可是wx.config之类的配置都是ok。我使用的JSSDK版本是1.4.0。分享API是updateAppMessageShareData。java
另外再提一下。使用最新的分享API时,微信会自动在咱们的分享连接后面加参数,这会致使咱们传递参数时,解析会出问题。好比咱们配置的连接是:
https://test.com?id=11
。当分享后,连接变成了:https://test.com?from=singlemessage ?id=11
。这就会致使咱们从连接中拿参数时会出问题。可是它仍是有规律的。它是在?
号前面插入本身的参数的。因此咱们的参数就是最后一个?号后面的参数(下面代码只是说明下思路,具体应用确定是要判断多种状况的,从URL地址获取参数这些基本技能就不用说了):webpack
let paramsArray = window.location.href.split("?");
let myParams = paramsArray[paramsArray.length -1]; //咱们的参数在这里
复制代码
填坑web
最后发现是因为使用了最新版本库的新的分享API形成的,在微信社区中也有人提出,但如今仍是未解决的。因此惟一方法就是不要使用的版本和新的分享API。建议使用1.3.3版本的onMenuShareAppMessage。官方文档提醒你们这几个旧的API即将废弃。可是因为新的API的不稳定,以及没有说明具体时间,废弃以前的API仍是有段时间的。因此如此出现和我同样的问题,安卓手机没法自定义分享,IOS手机能够,或者其余问题,你们试试是否是版本问题,给你们提供个思路,供参考npm
看到这里,你就彻底了解这篇文章的主要内容了。若是你时间宝贵,能够就此离开了。若是你有兴趣,能够继续听听我讲故事。后端
下面正式开始讲故事api
在最近开发的项目中,有个微信自定义分享功能,由于以前也作过微信网页开发,就以为小case,引入JSSDK、后端提供配置接口、调用wx.config配置下SDK、在wx.ready中配置须要用到的API好比分享给微信好友,搞定。安全
开始干活,毕竟上次开发微信网页也隔了快一年的,JSSDK版本都不知道更新多少了,先去官网看看文档 微信JS-SDK说明文档 。乍一看,版本都到1.4.0。此次功能主要用到分享接口,跳到分享接口看看微信
请注意,原有的 wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、wx.onMenuShareQZone 接口,即将废弃。请尽快迁移使用客户端6.7.2及JSSDK 1.4.0以上版本支持的 wx.updateAppMessageShareData、updateTimelineShareData 接口。微信开发
原有的wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、wx.onMenuShareQZone分享接口即将被废弃,取而代之是 wx.updateAppMessageShareData、updateTimelineShareData。同时进行了合并,分享给微信好友和分享到QQ好友合并成了一个接口、分享到朋友圈和分享到QQ空间合并成了一个接口。
这样状况下,确定是要用1.4.0版本,而且用最新的API。
按照官方文档,接下来就是一波猛如虎的操做,而后在本身的IOS手机上自测没问题就提测了
tip: 这其中要求分享连接域名或路径必须与当前页面对应的公众号JS安全域名一致。由于接口也多是同个域名,为方便本地测试,使用了charles的map remote进行代理,方便本地开发
我只在本身的IOS手机测试过没问题,提测后,测试同窗发现,IOS自定义分享没问题,安卓手机自定义分享到微信好友、微信空间就有问题。并且安卓手机分享到QQ分享到QQ空间都没问题。
总结坑就是: 安卓手机分享到微信好友、微信空间不行。其余分享均可以
一直对本身写的代码自信满满,听到测试同窗提说有bug,还不信,自认为是环境问题。后来发现,我是小看了微信,微信开发自古坑多,仍是得乖乖去找找是什么问题形成的
首先打开调试模式
发现wx.config返回ok、相关API配置也是返回ok,这说明JSSDK以及相关接口的配置时没问题的啊。
而后,从头开始排查,配置先写死,按文档写个最标准的试试,仍是还行。
接下来,就是各类google了,有人提过相应的问题,在微信开发社区也有同志反馈了(2018-09-29),并且也有官方人员出来回答了,但最后仍是没有答案。
最后,就是取看那些自定义分享成功的demo。我一看,没区别啊,再仔细看,忽然发现那些成功的demo用的API和我用的不一样,这下有点想法了,莫非是版本问题?好,接下来又是一波猛如虎的操做,降个版本用1.3.3。而后测试下,果真均可以,而后提测让测试同窗测也都经过了。果真是最新的API不稳定。
一、微信JSSDK如今最新版本1.4.0。首先它对微信客户要求是6.7.2。这个相对要求仍是有点高
二、其次,最新的版本稳定性仍是有待考察的
三、在使用到外面公共库,得留意下相关版本问题,webpack/npm也常常因为版本而出问题
一言以蔽之,就是因为使用了最新版本JSSDK以及相关API致使安卓手机没法自定义分享,使用低版本库以及API就能够了。
注意,写这篇文章是2019-01-08,以后微信可能会修复这个问题,到时就能够考虑使用新的api,而且有些会被废弃的,只是给你们提个解决问题的思路。有问题望指正。