入坑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,而且有些會被廢棄的,只是給你們提個解決問題的思路。有問題望指正。