基於微信的通知渠道,微信為開發者提供了可以高效觸達用戶的模板消息能力,以便實現服務的閉環並提供更佳的體驗。(微信6.5.2及以上版本支持模板功能。低於該版本將無法收到模板消息。)
模板推送位置:服務通知(點擊查看詳情還能跳轉到下發消息的小程序的指定頁面)
模板下發條件:用戶本人在微信體系內與頁面有交互行為后觸發
微信小程序模板消息使用說明(官方文檔):https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/template-message/templateMessage.send.html
為了防止對模板消息的濫用,帶來不好的用戶體驗,小程序對模板消息推送做了相應的限制。
下發條件說明(觸發模板消息下發的兩個場景):
1. 支付
當用戶在小程序內完成過支付行為,可允許開發者向用戶在7天內推送有限條數的模板消息(1次支付可下發3條,多次支付下發條數獨立,互相不影響)
2. 提交表單
當用戶在小程序內發生過提交表單行為且該表單聲明為要發模板消息的,開發者需要向用戶提供服務時,可允許開發者向用戶在7天內推送有限條數的模板消息(1次提交表單可下發1條,多次提交下發條數獨立,相互不影響)
也就是說,用戶提交一次表單,會提供給開發者一次推送權限,多次提交的情況下下發條數獨立。所以如果開發者想要哎7天內無限制的為用戶推送消息,需要做的就是-->從用戶那里獲取足夠多的推送權限(推送權限就是form表單的formid)。
所以,我們可以在前端頁面來收集用戶的formid,然后保存在服務器上。根據小程序的文檔說明:用戶在小程序內發生過提交表單行為且該表單聲明為要發模板消息的,只能在用戶發生提交行為的時候收集formid,所以,我們可以把頁面上用戶可點擊的按鈕或其他元素用表單組件中的button按鈕組件來代替,把用戶的交互點擊的bindtap事件通過表單的bindsubmit來代替 ,從而捕獲用戶的點擊事件來產生更多的formId。等到真正需要網絡請求的時候將收集到的formid發送至服務器保存。發送成功以后清空formid,以便再次收集新的formid。
后端在發送模板消息的時候先從保存的formid中挑出未過期的一條formid,刪除已過期的不可用的fromid以及當前將要用的formid。