
小程序的推送功能,簡單說就是能主動給用戶發消息提醒,比如訂單狀態變更、活動通知、服務提醒這些,既能幫用戶及時獲取關鍵信息,也能提升小程序的用戶粘性。不過很多人搞不清楚推送功能怎么實現,尤其是模板消息和訂閱消息的區別和配置方法。這里先明確一個關鍵:現在模板消息已經逐步被訂閱消息替代了,新開發優先做訂閱消息,模板消息僅針對老項目兼容。下面就用大白話,把這兩種消息的實現邏輯和配置步驟講明白,全程避開專業術語的坑。
不管是模板消息還是訂閱消息,實現推送的核心邏輯都一樣,簡單說就是“三步走”:第一步,得有小程序賬號和后臺服務,這是推送的基礎;第二步,要讓用戶同意接收消息(也就是授權),不然沒法主動發;第三步,通過官方接口把消息組裝好,發送給用戶。
這里要強調兩個關鍵前提:一是必須有服務器或者用官方提供的云服務,因為推送消息需要后臺代碼調用接口,不能只靠小程序前端;二是要配置好域名白名單(如果是自建服務器),確保小程序能正常和服務器、官方接口通信,不然消息發不出去。就像寄快遞,得有寄件地址(服務器)、收件人同意收件(用戶授權),還要走正規快遞通道(官方接口),少一步都不行。
模板消息是早期的推送方式,現在官方已經不推薦新用了,但很多老小程序還在使用,這里簡單說下配置步驟,重點講清楚注意事項,避免踩坑。
首先登錄小程序官方后臺,找到“模板消息”相關模塊(不同平臺入口可能略有差異),然后根據自己的業務場景選擇模板,比如“訂單支付成功通知”“預約提醒”等。如果沒有合適的現成模板,可以申請自定義模板,填寫模板標題、內容字段(比如訂單號、時間、金額),提交后等待審核,審核通過后就能拿到一個唯一的“模板ID”,這個ID很關鍵,后續發送消息要用到。
這里要注意:模板消息的內容必須和業務場景匹配,不能亂申請,比如做電商的不能申請教育類的模板,審核會不通過;而且模板里的字段是固定的,后續發送消息時只能填充對應字段的內容,不能隨意加無關信息。
要給用戶發模板消息,必須知道用戶的唯一標識(也就是OpenID),這個可以通過小程序前端代碼獲取,用戶登錄小程序時就能拿到,拿到后要存到后臺數據庫里。
另外,模板消息有個嚴格要求:必須有用戶觸發的場景,比如用戶完成支付、提交表單、點擊按鈕后,才能發送對應的模板消息,不能無理由主動發。比如用戶下單后,才能發“訂單提交成功”的模板消息,不能用戶沒操作就發廣告,不然會被官方限制。
這一步需要后臺開發人員寫代碼,核心是“組裝消息內容+調用官方接口”。首先,根據之前拿到的模板ID,把對應的字段內容填好,比如模板里有“訂單號”“支付時間”“金額”,就從數據庫里把這些數據取出來,按照模板要求的格式組裝好。
然后,調用官方提供的模板消息發送接口,傳入模板ID、用戶OpenID、組裝好的消息內容,還有點擊消息后跳轉的小程序頁面路徑(可選)。調用接口后,官方會返回發送結果,如果返回成功,用戶就能在消息列表里收到通知了;如果失敗,會返回錯誤碼,比如“模板ID錯誤”“用戶未授權”,根據錯誤碼排查問題就行。
模板消息的限制很多,重點注意這幾點:一是發送頻率有限制,不能頻繁發,不然會被限流;二是必須有用戶觸發場景,無場景發送會被處罰;三是只能用于通知類消息,不能發廣告、營銷類內容;四是新小程序現在已經無法申請新的模板消息了,只能用訂閱消息,所以老項目如果有條件,建議升級成訂閱消息。
訂閱消息是現在官方推薦的推送方式,比模板消息靈活,限制也更合理,支持一次性訂閱和長期訂閱(部分類目支持),下面詳細拆解配置步驟,從準備工作到最終發送,一步一步講清楚。
首先,確保已經完成小程序賬號注冊和認證,拿到AppID和AppSecret(在后臺“開發設置”里找),這兩個是調用官方接口的“鑰匙”,要妥善保存。然后,準備好服務器(自建或云服務),如果是自建服務器,要在小程序后臺配置好服務器域名白名單,把官方接口域名和自己的服務器域名加進去,不然接口調用會失敗。
如果用官方云開發,就不用自己配置服務器和域名了,直接用云函數調用接口就行,更簡單,適合不懂后臺開發的新手。
登錄小程序官方后臺,找到“訂閱消息”模塊,選擇“公共模板庫”,根據業務場景篩選模板,比如“服務預約提醒”“物流狀態通知”“活動開始提醒”等。選中模板后,勾選需要的字段(比如預約時間、服務內容、地點),提交后就能拿到“模板ID”,和模板消息一樣,這個ID是后續發送消息的關鍵。
如果公共模板庫沒有合適的,可以申請“自定義模板”,填寫模板標題、字段名稱、字段類型(文本、數字、日期等),提交審核,審核通過后就能使用。這里要注意:自定義模板的審核比較嚴格,字段要和業務相關,不能冗余,比如沒必要的字段不要加,不然會審核不通過。
訂閱消息的核心要求是“用戶主動同意”,所以必須在小程序前端加一個授權按鈕,讓用戶點擊后彈出授權彈窗,用戶選擇“允許”后,才能后續發送消息。不能默認授權,也不能誘導用戶同意,不然會被官方處罰。
具體操作:在小程序的某個頁面(比如下單頁、預約頁)添加一個按鈕,綁定點擊事件,點擊后調用官方提供的授權接口(比如wx.requestSubscribeMessage),傳入之前拿到的模板ID。這時會彈出彈窗,讓用戶選擇“允許”或“拒絕”;如果用戶勾選“總是保持以上選擇,不再詢問”,后續再調用授權接口就不會再彈窗,保持之前的選擇。
用戶授權后,前端要把授權結果(同意或拒絕)和用戶的OpenID一起傳到后臺,后臺把這些信息存到數據庫里,后續發送消息時要先判斷用戶是否授權,只有授權過的才能發。這里要注意:每次發送不同類型的消息,都需要對應的模板授權,比如發“訂單提醒”和“活動通知”,需要用戶分別授權兩個模板。
這一步和模板消息類似,但接口不同,需要后臺調用訂閱消息的發送接口。首先,從數據庫里取出用戶的OpenID、對應的模板ID,然后根據模板的字段要求,組裝消息內容,比如模板字段是“活動名稱”“開始時間”“地點”,就把對應的信息填進去,確保字段名稱和模板里的一致,不然會顯示異常。
然后,調用官方訂閱消息發送接口,傳入模板ID、用戶OpenID、消息內容、跳轉頁面路徑(可選)等參數。調用后,官方會返回發送結果,0表示成功,其他錯誤碼表示失敗,比如“用戶未授權”“模板ID錯誤”“消息字段不匹配”等,根據錯誤碼排查問題即可。
這里要注意:訂閱消息有發送頻率限制,比如開通支付功能的小程序每天最多發300萬條,沒開通的最多100萬條,具體以官方規則為準;而且消息內容要真實有效,不能夸大或發送無關信息。
現在訂閱消息還支持語音提醒功能,只要模板支持,用戶在授權時可以選擇開啟語音提醒,收到消息時會同步播報語音,比如“收款到賬10元”。配置方法也很簡單,在調用授權接口時,確保模板支持語音提醒,用戶勾選即可,不需要額外寫復雜代碼。
另外,要做好消息管理,比如用戶后續取消訂閱(在消息列表里設置拒收),官方會把這個事件推送到后臺,后臺要及時更新用戶的授權狀態,避免后續再給拒收的用戶發消息,既浪費資源又影響用戶體驗。
不管是哪種推送方式,都要注意以下幾點,不然容易出現推送失敗或者被官方處罰的情況:
1. 嚴格遵守授權規則:不能誘導用戶授權,比如不授權就不讓用小程序核心功能;也不能在用戶沒授權的情況下強行發送消息,會直接失敗。
2. 控制推送頻率和時間:不要頻繁給用戶發消息,比如一天發好幾次,容易讓用戶反感,還可能被限流;推送時間盡量選在用戶活躍時段,比如9:00-21:00,避開休息時間。
3. 保護用戶隱私:消息內容里不能包含用戶敏感信息,比如手機號、身份證號;后臺存儲用戶OpenID等信息時,要做好加密,防止信息泄露。
4. 做好異常監控:后臺要記錄每次推送的結果,比如哪些用戶發送失敗、失敗原因是什么,定期排查問題;同時要監控用戶的訂閱狀態變化,及時調整推送策略。
5. 消息內容有價值:推送的消息必須和用戶相關,能幫用戶解決問題,比如訂單提醒、服務到期提醒等,不要發無關的廣告或垃圾信息,不然用戶會取消訂閱,還可能投訴。
簡單說結論:新開發的小程序,直接選訂閱消息,功能更全、限制更合理,還支持語音提醒等進階功能;如果是老小程序,已經在用模板消息且能滿足需求,可以暫時繼續用,但建議逐步升級成訂閱消息,因為官方后續可能會逐步停止對模板消息的支持。
最后再梳理一下核心:實現推送的關鍵是“賬號+服務器+用戶授權+官方接口”,配置步驟看似復雜,其實拆解開來就是“申請模板-獲取授權-發送消息”三步,只要跟著步驟來,注意好授權和合規問題,就能順利實現推送功能。如果不懂后臺開發,也可以用官方的云服務,減少服務器配置的麻煩,專注于消息內容和業務邏輯即可。