模板消息推送,已在2020年1月10日下線,我們根據開發功能需求選擇訂閱消息功能。
附帶源碼圖文:https://mp.weixin.qq.com/s/sG2o5sGCY4MDg6CYlSSf8w
首先先看下小程序開發文檔中的訂閱消息的介紹,
而現在小程序支持雲開發,使用雲函數可以免鑒權,可以說是很方便像我這樣的小白學習了。
經過幾天的研究,可以從demo跑通然后植入到之前的小程序中,相信你在看完這個教程之后也會有所明白。
一、獲取消息模板
官方給個人開發開放的是一次性訂閱,可以在公共模板庫中進行挑選符合自己開發需求的模板。如果需要單獨申請模板可以選擇申請模板(聽說時間比較長,而且可能會被拒)。
上圖中的模板id復制到剪切板,之后項目中進行配置。
點開對應模板的詳情頁進行選擇字段和展示順序。
二、新建工程
打開小程序開發者工具,新建小程序工程。
選擇調試基礎庫為2.8.2版本以上,如果不想切換,那么調試只能拿真機測試,別提多麻煩了。
當然官方也是有這個通知的,看完你就明白上一步的操作原因了。
三、配置項目
空白的項目上,刪除不必須的代碼,然后對代碼的層級進行簡單的修改。
1.project.config.json中修改對應的目錄結構
2.添加雲初始化參數。
點擊開發面板-雲開發-設置,查看環境設置中環境名稱對應的環境ID,復制其填寫到下方位置進行初始化。
重要的參數配置完成了,接下來開始書寫代碼部分。
四、書寫代碼
1.demo預覽
訂閱消息的兩個點,包括獲取訂閱消息授權、推送訂閱消息。
訂閱消息實現的邏輯大致就是用戶主動點擊進行授權,然后作為小程序的服務端才能給用戶進行推送消息,如果未允許授權,服務端無法下發訂閱消息。
2.pages/index.wxml
3.pages/index.js
通過頁面用戶點擊獲取訂閱授權,發起訂閱請求,調用js函數,將需要提示的內容在函數中動態的傳入到雲數據庫中(在寫作時暫時沒實現通過雲函數實先存數據,在本地調用卻沒問題,最后就轉變思路實現如此)
在wx.requestSubscribeMessage的成功回調函數,進行存入數據庫數據的操作,此時需要注意在函數上方進行數據庫的初始化,
const db = wx.cloud.database()
在用戶點擊允許后,點擊發送訂閱消息的按鈕進行消息推送,點擊動作調用sendMsg的js方法。
此時需要借助雲函數getopenId和sendMsg,在配置文件config.json中需要添加如下配置。
"permissions": {
"openapi": [
"subscribeMessage.send"
]
},
4.對應雲函數sendMsg的代碼展示如下,在發送完畢后進行狀態的更新。
5.對應雲函數sendMsg的代碼展示如下(默認創建node.js函數即可實現)
到此實現消息訂閱的代碼,示例圖如下。
五、實現雲函數的部署與定時任務
這個功能可以說是很重要的,你單純實現了點擊訂閱和發送信息其實並沒有什么大的作用。
1.定時器的設置只需要在想要做定時任務的雲函數中進行定時器配置即可。
下方的配置是每分鍾整點,如果需要定時每天9:10的話,則要配置“0 10 9 * * * *”
"triggers": [
{
"name": "myTimer",
"type": "timer",
"config": "0 * * * * * *"
}
2.上傳並部署整個雲函數的安裝包,優先選擇雲端安裝依賴。
3.上傳成功后,右鍵點擊config.json進行上傳觸發器。
到此配置自動化發送訂閱消息的開發配置步驟完成。