微信小程序訂閱消息開發指南


2019年10月12日微信開放了小程序訂閱消息的功能。按官方的說法,目前的模板消息在實現小程序服務閉環上存在缺陷:

1. 部分開發者在用戶無預期或未進行服務的情況下發送與用戶無關的消息,對用戶產生了騷擾;
2. 模板消息需在用戶訪問小程序后的 7 天內下發,不能滿足部分業務的時間要求

模板消息確實存在上述的硬傷,不利於小程序的用戶留存和用戶體驗。為了解決這些問題,微信官方推出了用戶訂閱消息功能。我在微慕專業版上加了訂閱消息的功能,並驗證了這個功能。這個功能是否能都達到官方的預期,這個我感覺不那么樂觀。這里我先說我的感受:目前的訂閱消息還很不完善,基本是“半成品”,后續還有很大的優化空間。

目前,官方只開放了“一次性訂閱消息”,尚未開放“長期性訂閱消息”,因此我只嘗試了“一次性訂閱消息”。

一次性訂閱消息:用於解決用戶使用小程序后,后續服務環節的通知問題。用戶自主訂閱后,開發者可不限時間地下發一條對應的服務消息;每條消息可單獨訂閱或退訂。

訂閱消息推送位置:服務通知
訂閱消息下發條件:用戶自主訂閱
訂閱消息卡片跳轉能力:點擊查看詳情可跳轉至該小程序的頁面

以下我簡單說明訂閱消息的開發過程和使用體驗。

一.訂閱消息的開發

1.獲取訂閱消息的模板ID

在微信小程序的管理后台,在左側“功能”菜單,選擇“訂閱消息”,然后點擊“添加”

然后選擇你需要的消息模板,並配置關鍵詞。

配置完成后,如下圖所示。

值得關注的是,在配置好的模板詳情頁面里的“詳細內容”很重要,這個就是開發訂閱消息時需要遵循的消息格式,這個格式和模板消息有細微的差別

根據微慕小程序的需要,我選用了“新的評論提醒”和“內容更新提醒”這兩個消息模版。前者用於提醒發表話題或文章的作者,有新的話題或文章評論,增強作者與讀者之間的交流互動;后者是提醒訂閱用戶,小程序有新的文章發布,引導用戶回歸小程序

訂閱消息申請模板的時候,需要選擇所屬類目,只能選擇當前小程序相關的類目模板,對於模板消息不需要選擇對應類目。如果刪除小程序類目,就會把訂閱消息模板一起刪除。因此刪除類目要小心謹慎。

2.觸發用戶訂閱,獲取下發的權限
觸發用戶訂閱,微信小程序提供的api是: wx.requestSubscribeMessage,用戶發生點擊行為或者發起支付回調后,才可以調起訂閱消息界面。

注意:微信小程序開發工具尚不支持此功能,在開發工具觸發訂閱的api,會提示:
requestSubscribeMessage:fail 開發者工具暫時不支持此 API 調試,請使用真機進行開發

update:2020年5月18日,日前訂閱消息已經支持微信小程序開發工具。

調用api的代碼示例如下:

wx.requestSubscribeMessage({
tmplIds: ["模板A","模板B"],
success: function (res) {
//成功
},
fail(err) {
//失敗
console.error(err);
}
})

wx.requestSubscribeMessage(Object object) 的回調函數object.success 參數有兩個:errMsg和TEMPLATE_ID; 接口調用成功時errMsg值為’requestSubscribeMessage:ok’。TEMPLATE_ID是動態的鍵,即模板id,值包括’accept’、’reject’、’ban’。’accept’表示用戶同意訂閱該條id對應的模板消息,’reject’表示用戶拒絕訂閱該條id對應的模板消息,’ban’表示已被后台封禁。例如

{ errMsg: “requestSubscribeMessage:ok”, zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: “accept”} 表示用戶同意訂閱zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE這條消息。

個人覺得這個動態鍵不是特別合理,代碼處理起來有些麻煩,如果改成靜態鍵的json格式比較方便處理,例如:
{
errMsg:"requestSubscribeMessage:ok",
result: [
{ templateId:"zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE",
status:"accept"
}
]
}

在手機上調用此api方法會調出訂閱消息的界面,如下圖所示:

關於這個訂閱消息的授權有幾點要注意:

1) 在確認提示框里,如果用戶選擇“取消”表示拒絕(取消)訂閱消息,選擇“允許”表示用戶訂閱一次消息。

2) 如果用戶不勾選“總是保持以上選擇,不再詢問”,那么每次用戶觸發都會彈出提示框。

3) 如果用戶勾選“總是保持以上選擇,不再詢問”,那么將再也不會喚起這個對話框。同時,如果選擇“取消”,那么以后每次調用這個api的時候,都會自動拒絕;如果選擇“允許”,那么以后每次調用此api,都會自動允許授權。

目前小程序沒有提供獲取用戶是否授權訂閱消息的方法。通過wx.openSetting 方法無法獲取用戶是否授權消息訂閱的信息,scope 列表沒有訂閱消息的內容。

如果想從自動拒絕轉換到自動自動運行,需要打開小程序的設置去配置。設置方法:點擊小程序右上角的三個點,打開如下對話框

然后選擇“設置”,在設置項里選擇“訂閱消息”

4)對於同一種消息,用戶可以訂閱多次,訂閱多少次,就會收到多少次訂閱消息,這個訂閱次數是否有上限,官方沒有說明,初步判斷是不限的。但是,微信不會提供訂閱的次數,因此需要在小程序的后端服務里存儲用戶訂閱的次數。因此,我在微慕小程序專業版里,提供了一個給用戶多次訂閱的設置,並記錄用戶訂閱的次數。

如果用戶需要某個消息服務,可以訂閱多次,當然也可以在點擊“訂閱”的對話框里選擇“取消”,“取消”一次也就減少一次訂閱。

5)對於支付的場景,也需要用戶確認是否訂閱,這個我覺得不合理,支付后給用戶一個訂單推送消息應該是剛性需求,不需要再詢問一遍用戶是否訂閱。

2.調用接口下發訂閱消息

訂閱消息下發的接口是小程序后台服務端調用:subscribeMessage.send,此方法類似下發模板消息的方法,詳細調用說明見參考官方的鏈接:
https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

訂閱消息的下發接口方法和模板消息稍有不同,

模板消息的json格式如下

"data": {
"keyword1": {
"value": "內容1",
"color": "#000"
},
"keyword2": {
"value": "內容2",
"color": "#000"
}
}

而訂閱消息的json格式如下:

"data": {
"thing1": {
"value": "內容"
},
"number2": {
"value": 20
}

訂閱消息的字段key是和數據類型有關,value的參數需要嚴格按照設置的類型提交,如果不按類型提交,會導致發送失敗。同時如果是文本型的內容,字數也有限制,超過限制也會發送失敗,但具體字數是多少,官方沒有給出,同時中英文混合計算的長度也有差異,據我目前測試25個中文字符是可以的。希望官方能給出具體的字符長度限制的明確數字。

如果調用下發的次數大於用戶的訂閱次數,調用接口下發訂閱消息會返回失敗。報如下錯誤

3.訂閱消息參數值內容限制說明

符號表示除中文、英文、數字外的常見符號,不能帶有換行等控制字符。 時間格式支持HH:MM:SS或者HH:MM。 日期包含年月日,為y年m月d日,y年m月、m月d日格式,或者用‘-’、‘/’、‘.’符號連接,如2018-01-01,2018/01/01,2018.01.01,2018-01,01-01。 每個模板參數都會以類型為前綴,例如第一個數字模板參數為number01.DATA,第二個為number02.DATA

例如,模板的內容為:

姓名: {{name01.DATA}}
金額: {{amount01.DATA}}
行程: {{thing01.DATA}}
日期: {{date01.DATA}}

則對應的json為

{
"touser": "OPENID",
"template_id": "TEMPLATE_ID",
"page": "index",
"data": {
"name01": {
"value": "某某"
},
"amount01": {
"value": "¥100"
},
"thing01": {
"value": "廣州至北京"
} ,
"date01": {
"value": "2018-01-01"
}
}
}

二.訂閱消息使用心得

1.訂閱消息雖然把訂閱的授權的交給了用戶,但是也增加了用戶使用難度,同時,一次性訂閱只能收到一次,操作起來比較繁瑣,如果不是剛需用戶可能會首次就拒絕了這個服務,要想重新獲取授權,需要用戶自己打開小程序設置里去配置,頗為麻煩,小程序沒有提供更簡便的方法去喚起。

2.小程序的服務商為了獲得更多給用戶發送訂閱消息的次數,肯定會想方設法去埋點引誘用戶去點擊訂閱,這種誘導估計也是違規。

3.用戶使用門檻和學習比較高,比如某個預約的服務,原來的場景是用戶只要有提交表單,小程序就可以推送消息給用戶,但是現在需要用戶主動去訂閱,無形中多了一步,如果用戶不熟悉訂閱消息或者直接點了“取消”,小程序就沒法通知到用戶了,用戶可能因此錯失服務,對商家和用戶都是損失。

4.微信小程序將采用訂閱消息,並逐步取消模板消息,雖然微信官方試圖在方便用戶和不打擾用戶這兩種選擇里去尋求平衡,但訂閱消息目前的模式恐怕無法達到這個期望,至少在我看來,無論對小程序的服務商,還是小程序的用戶,都感到不方便。

 

---------------------

 

原文鏈接:https://www.watch-life.net/wechat/subscribe-message.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM