基于微信的通知渠道,微信為開發(fā)者提供了可以高效觸達(dá)用戶的模板消息能力,以便實(shí)現(xiàn)服務(wù)的閉環(huán)并提供更佳的體驗(yàn)。(微信6.5.2及以上版本支持模板功能。低于該版本將無法收到模板消息。) 模板推送位置:服務(wù)通知(點(diǎn)擊查看詳情還能跳轉(zhuǎn)到下發(fā)消息的小程序的指定頁面) 模板下發(fā)條件:用戶本人在微信體系內(nèi)與頁面有交互行為后觸發(fā) 微信小程序模板消息使用說明(官方文檔):https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html 為了防止對模板消息的濫用,帶來不好的用戶體驗(yàn),小程序?qū)δ0逑⑼扑妥隽讼鄳?yīng)的限制。 下發(fā)條件說明(觸發(fā)模板消息下發(fā)的兩個(gè)場景): 1. 支付 當(dāng)用戶在小程序內(nèi)完成過支付行為,可允許開發(fā)者向用戶在7天內(nèi)推送有限條數(shù)的模板消息(1次支付可下發(fā)3條,多次支付下發(fā)條數(shù)獨(dú)立,互相不影響) 2. 提交表單 當(dāng)用戶在小程序內(nèi)發(fā)生過提交表單行為且該表單聲明為要發(fā)模板消息的,開發(fā)者需要向用戶提供服務(wù)時(shí),可允許開發(fā)者向用戶在7天內(nèi)推送有限條數(shù)的模板消息(1次提交表單可下發(fā)1條,多次提交下發(fā)條數(shù)獨(dú)立,相互不影響) 也就是說,用戶提交一次表單,會(huì)提供給開發(fā)者一次推送權(quán)限,多次提交的情況下下發(fā)條數(shù)獨(dú)立。所以如果開發(fā)者想要哎7天內(nèi)無限制的為用戶推送消息,需要做的就是-->從用戶那里獲取足夠多的推送權(quán)限(推送權(quán)限就是form表單的formid)。 所以,我們可以在前端頁面來收集用戶的formid,然后保存在服務(wù)器上。根據(jù)小程序的文檔說明:用戶在小程序內(nèi)發(fā)生過提交表單行為且該表單聲明為要發(fā)模板消息的,只能在用戶發(fā)生提交行為的時(shí)候收集formid,所以,我們可以把頁面上用戶可點(diǎn)擊的按鈕或其他元素用表單組件中的button按鈕組件來代替,把用戶的交互點(diǎn)擊的bindtap事件通過表單的bindsubmit來代替 ,從而捕獲用戶的點(diǎn)擊事件來產(chǎn)生更多的formId。等到真正需要網(wǎng)絡(luò)請求的時(shí)候?qū)⑹占降膄ormid發(fā)送至服務(wù)器保存。發(fā)送成功以后清空formid,以便再次收集新的formid。 后端在發(fā)送模板消息的時(shí)候先從保存的formid中挑出未過期的一條formid,刪除已過期的不可用的fromid以及當(dāng)前將要用的formid。 注:這只是一個(gè)解決思路,請務(wù)必在嚴(yán)格遵守小程序運(yùn)營規(guī)范的前提下把本思路作為一個(gè)參考。 未解決問題:如果用戶在一周內(nèi)沒有訪問或點(diǎn)擊過小程序中的任何組件,那我們就收集不到有效的fromid,也就意味著我們失去了給用戶發(fā)送模板消息的權(quán)限,這種情況下該怎么辦? |