上一節給大家將了藉助雲開發實現小程序支付功能,那麼我們就要想了,能不能借助雲開發實現小程序消息推送功能呢? 還別說,雲開發還真能實現推送的功能。
一直關注我的同學肯定知道老師之前也寫過藉助java後臺實現小程序消息推送的文章。 我們藉助java後臺雖然也能輕鬆的實現消息推送。但是呢?用java開發後臺推送,必須要搭建服務器,學習java代碼,部署java代碼當然你就是做java開發的,或者學習過java,這沒什麼。
但是作爲小程序開發人員來說,用java顯得太重了。
傳送門:
《藉助小程序雲開發實現小程序支付功能(含源碼)》
《5行代碼實現微信小程序模版消息推送 (含推送後臺和小程序源碼)》
下面就來教大家如何藉助雲開發實現小程序模版消息的推送功能。
老規矩,先看效果圖
下面來講實現步驟
一,定義推送的雲函數
由於我們的雲推送功能只能在雲函數裏調用,所以我們這裏必須要在雲函數裏實現推送功能。
1,首先我們定義一個雲函數push0524。
如果你還不知道如何使用雲開發,如何定義雲函數,去翻下老師之前的文章。有寫的。
把完整的代碼貼給大家
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 雲函數入口函數
exports.main = async(event, context) => {
console.log(event)
return sendTemplateMessage(event)
}
//小程序模版消息推送
async function sendTemplateMessage(event) {
const {
OPENID
} = cloud.getWXContext()
// 接下來將新增模板、發送模板消息、然後刪除模板
// 注意:新增模板然後再刪除並不是建議的做法,此處只是爲了演示,模板 ID 應在添加後保存起來後續使用
const addResult = await cloud.openapi.templateMessage.addTemplate({
id: 'AT0002',
keywordIdList: [3, 4, 5]
})
const templateId = addResult.templateId //新增的模版id
const sendResult = await cloud.openapi.templateMessage.send({
touser: OPENID,
templateId,
formId: event.formId,
page: 'pages/index/index',
data: {
keyword1: {
value: '雲開發實現推送',
},
keyword2: {
value: '2019 年 5 月 24 日',
},
keyword3: {
value: '編程小石頭',
},
}
})
//刪除模版id
await cloud.openapi.templateMessage.deleteTemplate({
templateId,
})
return sendResult
}
上面代碼所實現的就是
1,創建模版,拿到模版id
2,使用模版ID,填充模版消息,發送模版
3,刪除模版。
我們正常開發時,模版都是在小程序後臺獲取到的。這裏是爲例演示方便。所以正常開發時,只需要實現第二步就行了。
推送的關鍵代碼就是這個方法:
cloud.openapi.templateMessage.send
通常我們定義完push0524雲函數以後,如果直接調用的話,會報錯誤的。
來看下這個錯誤,看到紅色框裏的permission就知道,肯定是權限的問題。所以我們在定義完雲函數以後,要在push0524雲函數下面添加權限配置頁面。如下圖
重要的就是這個: "templateMessage.send", 推送權限。因爲推送是雲開發給我們提供的,我們這裏調用時,必須配置相關權限,才能使用的。
到這裏我們的推送功能就實現了。下面我們來驗證下。
二,驗證雲開發推送
驗證其實很簡單,和我們之前的《5行代碼實現微信小程序模版消息推送 (含推送後臺和小程序源碼)》 類似。只不過一個是在java後臺推送,一個是在小城裏推送。下面我們簡單寫個小程序裏驗證推送的demo。
功能很簡單
1,獲取formid,因爲推送必須有formid的
2,點擊調用push0524實現推送
簡單的貼下代碼
需要注意的一點:我們測試時,必須要真機測試。因爲模擬器沒法獲取到formid的。
我們在推送成功的success回調中打印下log。如果log中出現,send:ok字樣,就代表我們推送成功了。來看下推送成功的效果。
微信聊天列表接收到了消息提醒
消息內容
到這裏我們就用雲開發實現完整的消息推送功能了。是不是很簡單。
有任何關於編程的問題都可以加老師微信 2501902696(備註小程序)也可以找老師索要完整源碼。
編程小石頭碼農一枚,非著名全棧開發人員。分享自己的一些經驗,學習心得,希望後來人少走彎路,少填坑