升級訂閱消息必知的 5 個細節|附實戰教程

小程序

01-11 12:42

前言

微信官方爲提升小程序模板消息的使用體驗,調整了模板消息的下發條件。原有的模板消息將升級爲「訂閱消息」,而模板消息接口于 2020 年 4 月 10 日下線(在 2020 年 1 月 10 日以後新發布的小程序只能使用訂閱消息),屆時將無法再使用原接口推送模板消息,因此需要開發者及時進行調整。

模板消息與訂閱消息的區別

無論是模板消息,還是現在新的訂閱消息,發送小程序消息都是通過三步完成:

  • 獲取模板 ID(即創建模板)
  • 獲取下發的權限
  • 發送消息

從步驟來看,只有「獲取下發的權限」這一步是有變化的,其余都是相同的。

模板消息

當用戶在小程序內完成特定的交互行爲(支付或提交表單行爲)來收集 formid,後續利用該 formid 可以在 7 天內任意時間給該用戶推送模板消息。

  • 發送模板消息一定要攜帶 formid
  • 推送的有效時間爲 7 天
  • 用戶只能被動選擇接收,下發的權利掌握在開發者手上

訂閱消息

當用戶在小程序內點擊特定按鈕後會彈出申請訂閱彈窗,同意後小程序可在後續任意時間給該用戶推送服務通知。

  • 發送訂閱消息需要用戶先進行授權
  • 授權一次可發送一條服務通知,可以重複授權,每一次授權都會單獨保存爲一條記錄
  • 推送時間不受限制
  • 用戶自主選擇接受,下發的權利掌握在用戶手上

小結

之前的「模板消息」下發是不需要用戶授權的,理論上可以設計成用戶點擊一次就獲得一次權限,這個過程中用戶是無感知的,只要有了 formid,在公共模板庫裏有的都能下發,且數據類型沒有限制,用戶收到什麽消息完全取決于開發者。

現在的「訂閱消息」更像是一個開關,需要用戶主動點擊授權之後才能獲取下發消息權限,用戶接不接收消息,接收什麽訂閱消息,決定權在用戶手裏。另外訂閱消息還嚴格控制了數據類型和長度,不符合要求的將無法下發。(血淚教訓啊,並且你只有在添加模板之後才能知道這個字段是屬于什麽類型,對于帶變量的模板消息千萬要注意變量是否符合字段要求)

訂閱消息使用場景

「模板消息」與「訂閱消息」雖然都是爲了召回用戶以及推送消息提醒,但由于模板消息推送的時間限制過于嚴格,相對于一些服務周期較長的小程序來說,7 天的限制不能提供完整的服務。

例如機票類的小程序,用戶從訂票到出行,這間隔很大可能是超過 7 天的,如果想給用戶發送 “航班延誤提醒” 等消息,很有可能是無法實現的。因此,對于低頻、長線服務的小程序來說,「訂閱消息」是非常重要的。

另外,有少量的小程序會把「模板消息」當成營銷工具,用來推送廣告,誘導用戶點擊,這極大影響用戶的使用體驗。「訂閱消息」的上線完美的彌補了這兩個問題。

與「模板消息」不同,現在是需要用戶授權訂閱後才能下發消息,對于剛需的服務場景,例如外賣小程序的 “外賣派送消息” 以及電商小程序的 “到貨通知” 等場景,訂閱率都是比較高的。

而非剛需的服務場景,則可以對用戶進行 “引導訂閱”,所以首先要讓用戶主動觸發訂閱。例如,對電商小程序來說,可以引導用戶訂閱心儀商品的 “降價通知”;而內容類小程序,可以引導用戶訂閱其感興趣的話題等。

升級訂閱消息的防坑指南

1. 調起訂閱彈窗

觸發用戶訂閱,微信小程序提供的 api 是:wx.requestSubscribeMessage,觸發條件必須是用戶點擊行爲(bindtap 事件)或發起支付回調後才能調起訂閱消息界面。像 form 表單的 bindsubmit 事件就不行,如果原先在 form 表單中獲取 formid 要升級成訂閱消息,這裏提供兩個思路參考:

  • 將 form 表單的 bindsubmit 事件改成 bingtap 事件。手動獲取 form 表單的數據,通過 bindtap 事件調起訂閱消息界面,完成訂閱後再提交表單。(適合表單數據量較少時用)
  • 在 bindsubmit 事件中增加引導用戶訂閱的彈窗。例如,使用 wx.showModal(回調函數是 bindtap 事件),通過用戶是否確認來調起訂閱消息界面,當完成訂閱後再完成表單提交。

2. 調起訂閱彈窗同時跳轉頁面

當用戶點擊按鈕觸發訂閱彈窗的時候,同時跳轉頁面的話,在安卓上是能正常在已跳轉的頁面顯示訂閱彈窗,在 iOS 上則不會正常顯示,而是在上一個頁面顯示彈窗。所以從用戶體驗角度以及爲了能正常收集到訂閱記錄,必須等完成訂閱後才進行跳轉。

3. 用戶勾選 “總是保持以上選擇,不再詢問”

當用戶勾選了 “總是保持以上選擇,不再詢問” 時,那麽將再也不會喚起這個彈窗。同時,如果選擇 “取消”,那麽以後每次調用這個 api 的時候,都會自動拒絕;如果選擇 “允許”,則每次都會自動允許授權。

目前,可以使用 wx.getSetting() 來獲取用戶訂閱消息的訂閱狀態,詳情可查看官方文檔。所需基礎版本庫爲 2.10.0 ,即微信版本 7.0.9 及以上。

在一些特定元素觸發申請訂閱權限的條件下(比如上述通過 wx.showModal 來喚起訂閱界面),可以根據訂閱狀態來判斷是否觸發。使用 wx.getSetting() ,可以獲取用戶是否有勾選 “總是保持以上選擇,不再詢問” 以及對該條訂閱消息的訂閱狀態。當 wx.getSetting() 返回用戶拒絕訂閱該條訂閱消息就不顯示 wx.showModal 的引導訂閱彈窗。

4. 一次訂閱可以收集幾條訂閱消息?

wx.requestSubscribeMessage 一次調用最多可訂閱 3 條消息,即 tmplIds 最多爲 3 個。iOS 客戶端 7.0.6 版本、Android 客戶端 7.0.7 版本之後的一次性訂閱/長期訂閱才支持多個模板消息,iOS 客戶端 7.0.5 版本、Android 客戶端 7.0.6 版本之前的一次訂閱只支持一個模板消息。詳情可看官方文檔。

5. 發送訂閱消息的參數限制

發送訂閱消息必須嚴格按照「訂閱消息參數值內容限制說明」來進行填寫。

創建模板的時候,根據選擇的關鍵字不同,在發送訂閱消息的時候,需按照上述表格的說明進行填寫內容,如不符合參數限制的,則會發送失敗。例如,圖上的 name.DATA 是 10 個以內的純漢字或 20 個以內的純字母或符號,如果參數值是 知曉雲 2020 則會報 data.name1.value invalid 錯誤;phrase.DATA 的參數值如果超過 5 個漢字同樣是報錯。

 

通過以上的防坑指南,可以讓小程序開發者少走些彎路,在 deadline 的最後一刻,也能輕松快速完成升級。接下來將通過知曉雲的「知曉推送」,手把手教你如何接入訂閱消息。

“知曉推送打通不同平台間的消息推送障礙,運營者可以同時將通知推送至微信小程序、QQ 小程序、支付寶小程序、Android、iOS 等多個平台。無需編碼,開箱即用,一站式完成用戶觸達。輕松完成消息推送、用戶轉化、數據分析等多個層面的工作。”

接入訂閱消息

開發者可以在知曉推送頁面進入訂閱消息接入向導:

前三步與接入微信類似,詳情可查看微信小程序接入,在「接入 SDK」處需要填入 AppScret,AppSecret 用于開通模板消息服務,在小程序後台 “設置 – 開發設置” 中查看。

 

根據引導進行上報訂閱消息。

通過校驗後即完成接入

獲取模板 ID

在模板庫中搜索合適的模板,點擊選用,選擇需要的關鍵詞後提交即可完成模板創建。

在「我的模板」可以查看、添加和刪除模板,在這裏獲取模板 ID。

獲取下發權限

微信小程序提供了 wx.requestSubscribeMessage 接口來發起申請訂閱權限界面

上報訂閱狀態的接口

知曉雲提供了 wx.BaaS.subscribeMessage(options) SDK 來進行收集訂閱狀態

參數說明

Subscription

用戶發生點擊行爲或者發起支付回調後,調起訂閱消息界面,通過 SDK 上報訂閱狀態。

示例代碼

在函數內我們會調用微信 API wx.requestSubscribeMessage 申請發送訂閱權限,彈窗出來後,我們會收到 success 回調,當用戶在彈窗同意訂閱後,即上報訂閱結果爲 accept ,將訂閱的 template_id(模板 ID)和 subscription_type(訂閱類型)存入 subscription 數組中,最後在調用 SDK 進行上報即可。

  • 目前只支持一次性訂閱
  • 需要上報訂閱結果爲 accept 的模版 ID

在「訂閱記錄」查看和操作收集到的訂閱記錄

發送訂閱消息

  1. 在線發送
  2. 通過觸發器觸發
  3. 雲函數發送

1. 在線發送

通過在「訂閱消息」給用戶在線發送訂閱消息。填入所需的內容,可以選擇立即發送或定時發送。

智能過濾

在篩選目標用戶時,建議開發者使用智能過濾服務,以保證模板消息的觸達率和轉化率。

2. 通過觸發器觸發

創建觸發器

點擊「引擎」-「觸發器」即可創建新的觸發器。

觸發類型:即觸發源,每個觸發器都只能選定一種觸發類型,不同的觸發類型可執行的動作選項也不一樣。

設置條件

當選定觸發類型後,開發者需要指定觸發條件來觸發後續動作的執行,觸發條件與觸發類型一一相關,當滿足觸發條件的時候即可觸發該觸發器。

設置動作

動作類型選擇「發送訂閱消息」,與在線發送類似,填入相關內容,通過模板校驗後即可完成觸發器創建。如果所示,updated_at 存的是字符串,可以使用 {{updated_at | date:”Y 年 m 月 d 日 H:i”}} 這種 filter 形式進行轉換。另外可以點擊「添加動作」繼續設置動作。

更多內容可查看知曉雲-觸發器教程

3. 通過雲函數發送

創建雲函數

通過「引擎」-「雲函數」-「添加」即可完成雲函數的創建。

示例代碼

編寫完雲函數後點擊保存即完成雲函數的修改。

通過觸發器搭配雲函數使用

當需要發送的訂閱消息邏輯較爲複雜時,可以通過編寫雲函數進行觸發。

詳情可參考開發文檔中的章節《使用雲函數發送訂閱消息》

注意事項

發送訂閱消息必須嚴格按照「訂閱消息參數值內容限制說明」來進行填寫,「在線發送」以及「觸發器」設置動作中已有模板對應的參數值限制。如參數值錯誤,將導致發送失敗,發送詳情可在「知曉推送」-「日志」處查看。

升級福利

2020 年 1 月 17 日前,通過下方鏈接注冊的新用戶,即可獲得 90 元代金券。

(注冊傳送門 👉  http://cloud.minapp.com/?invitation=aiwphp)

影響 2010s 年代的十大消費電子産品
登錄,參與討論前請先登錄

評論在審核通過後將對所有人可見

正在加載中

小程序商店 minapp.com,一掃即用的小程序大全。微信公衆號「知曉程序」,做中國最好的小程序報道。

本篇來自欄目

解鎖訂閱模式,獲得更多專屬優質內容
X-POWER-BY FNC V0.5.2 FROM ZZ53