@TOC
2019年10月份,微信在小程序模塊消息能力方面公布了一項重大調(diào)整须揣。原有的模塊消息將升級為「訂閱消息」葛虐,支持一次性和長期性訂閱消息溜腐。而模塊消息已于2020年1月10日下線,小程序?qū)o法再使用原接口推送模板消息瓜喇,因此開發(fā)者需要及時進(jìn)行調(diào)整挺益。
以下是作者在小程序訂閱消息開發(fā)中遇到的一些坑:
第一坑: 在開發(fā)者工具中無法顯示訂閱消息的列表且無勾選選擇;
-
再使用wx.requestSubscribeMessage調(diào)起客戶端小程序訂閱消息界面時乘寒,假如傳了多個tmplIds時望众,在開發(fā)者工具中也只能看到一個,無法把整個列表展示出來伞辛;
如下圖所示:
實際我在開發(fā)過程中黍檩,tmplIds傳了三個(一次性最多授權(quán)限制也是三個)
而真機表現(xiàn)為:
第二坑: 在開發(fā)者工具中無法顯示不再詢問勾選項;
- 由于官網(wǎng)說明:
調(diào)起客戶端小程序訂閱消息界面始锚,返回用戶訂閱消息的操作結(jié)果刽酱。當(dāng)用戶勾選了訂閱面板中的“總是保持以上選擇,不再詢問”時瞧捌,模板消息會被添加到用戶的小程序設(shè)置頁棵里,通過 wx.getSetting 接口可獲取用戶對相關(guān)模板消息的訂閱狀態(tài)。
假如我們需要在客戶端看到勾選不再詢問下wx.getSetting的到底返回了什么姐呐,那么你需要通過真機測試才能看到殿怜,這里還有一個坑就是,假如你未使用不再詢問這個選項曙砂,那么wx.getSetting是獲取不到任何狀態(tài)的
第三坑: 多次訂閱一次性消息時头谜;
- 在訂閱消息時,假如兩條不一樣的訂閱消息鸠澈,假如用戶第一條訂閱消息勾選了不再詢問柱告,那么第二條不一樣的訂閱消息依舊有彈出授權(quán)彈窗,即每條訂閱消息相互獨立笑陈,互不影響际度;
第四坑: 勾選了不再詢問時;
-對于wx.requestSubscribeMessage,即使你勾選了不再詢問依舊會調(diào)用這個函數(shù)并且走相應(yīng)的邏輯涵妥,只是不會彈出彈窗而已
第五坑: 當(dāng)多個訂閱消息同時授權(quán)時乖菱;
-
由于訂閱消息一次性只能最多授權(quán)三條訂閱消息,假如用戶在授權(quán)過程中蓬网,只勾選三條中的其中一條窒所, 并且勾選了不再詢問按鈕,后點擊允許帆锋,那么其中沒勾選的兩條訂閱消息將不會再彈出授權(quán)吵取,即類似為"永久拒絕"狀態(tài);
假如在一次性授權(quán)三條訂閱消息時窟坐,倘若勾選了其中一條海渊,剩下兩條未勾選绵疲,且勾選了不在詢問按鈕,后點擊拒絕臣疑,那么其中一條會為永久拒絕狀態(tài)盔憨,但其中的兩天雖然未拒絕,但也不會再這次操作中重新有授權(quán)的機會讯沈;除非你再其他操作給他們兩條訂閱消息重新觸發(fā)wx.requestSubscribeMessage
第六坑: 當(dāng)訂閱消息頻繁觸發(fā)時郁岩;
- 當(dāng)訂閱消息頻繁觸發(fā)時,wx.requestSubscribeMessage會報錯缺狠,錯誤提示為:fail last call has not ended问慎;即上一次訂閱消息還未調(diào)用結(jié)束,這是個大坑挤茄,目前還沒有解決如叼,拒絕解決時間可以參照這個貼微信開放社區(qū)
第七坑: 動態(tài)獲取模板ID時;
- 雖然官網(wǎng)文檔沒有說明穷劈,但調(diào)用wx.requestSubscribeMessage授權(quán)之前是不能有異步操作的笼恰,否則會報錯,提示你授權(quán)不是通過bindtap事件觸發(fā)的歇终,這個真的是無敵坑社证,只能自己在初始化或者登錄后去先調(diào)用了獲取模板ID的接口,然后把它緩存下來评凝;
總結(jié):
目前訂閱消息尚且有些bug或者文檔不夠明確的地方追葡,未來持續(xù)關(guān)注和更新罷