以前的模板消息推送,將在2020年1月10日下線,因此咱們不得不使用訂閱消息了。html
咱們先來看下訂閱消息的官方簡介。
接下來咱們就來藉助雲開發,來快速實現小程序消息推送的功能。編程
這一步和咱們以前的模板消息推送是同樣的,也是先添加模板,而後拿到模板id
首先是開通訂閱消息功能,很簡單,以下圖
因爲長期性訂閱消息,目前僅向政務民生、醫療、交通、金融、教育等線下公共服務開放,後期將逐步支持到其餘線下公共服務業務。僅就線下公共服務這一點,長期性訂閱消息就和大部分開發者無緣了。
因此咱們這裏只能以使用一次性訂閱消息爲例。
如上圖,咱們從公共模板庫裏選擇一個一次性訂閱的模板。而後編輯模板以下圖
下圖就是咱們添加好的模板,下圖的模板id就是咱們須要的。json
咱們作訂閱消息受權時,只能是用戶點擊或者支付完成後才能夠調起來受權彈窗,官方是這麼要求的:
咱們這裏用到了wx.requestSubscribeMessage這個方法,來獲取用戶的受權。小程序
先來看官方爸爸是怎麼說的。
能夠看出官方提供了兩種方式,咱們這裏使用雲調用。說白了就是在雲函數裏調用推送功能。api
咱們只須要建立一個雲函數以下,而後填入用戶的openid,要跳轉的小程序頁面連接,模板內容,模板id便可。一般這些數據都應該傳進來,簡單起見,我就把這裏的模板內容寫成固定的。app
能夠看到,咱們成功的收到 上課提醒的模板消息,點擊進去,就是咱們具體的推送內容
其實我這是連續收到了4條消息,由於我點擊了4次容許推送,因此就能夠成功的推送4次。async
<button bindtap="shouquan" type='primary'>獲取訂閱消息受權</button> <button bindtap="getOpenid">獲取用戶的openid並推送消息</button>
//編程小石頭wechat:2501902696 Page({ //獲取受權的點擊事件 shouquan() { wx.requestSubscribeMessage({ tmplIds: ['CFeSWarQLMPyPjwmiy6AV4eB-IZcipu48V8bFLkBzTU'], //這裏填入咱們生成的模板id success(res) { console.log('受權成功', res) }, fail(res) { console.log('受權失敗', res) } }) }, //獲取用戶的openid getOpenid() { wx.cloud.callFunction({ name: "getopenid" }).then(res => { let openid = res.result.openid console.log("獲取openid成功", openid) this.send(openid) }).catch(res => { console.log("獲取openid失敗", res) }) }, //發送模板消息到指定用戶,推送以前要先獲取用戶的openid send(openid) { wx.cloud.callFunction({ name: "sendMsg", data: { openid: openid } }).then(res => { console.log("推送消息成功", res) }).catch(res => { console.log("推送消息失敗", res) }) } })
//編程小石頭wechat:2501902696 const cloud = require('wx-server-sdk') cloud.init() exports.main = async(event, context) => { try { const result = await cloud.openapi.subscribeMessage.send({ touser: event.openid, //要推送給那個用戶 page: 'pages/index/index', //要跳轉到那個小程序頁面 data: {//推送的內容 thing1: { value: '小程序入門課程' }, thing6: { value: '杭州浙江大學' }, thing7: { value: '第一章第一節' } }, templateId: 'CFeSWarQLMPyPjwmiy6AV4eB-IZcipu48V8bFLkBzTU' //模板id }) console.log(result) return result } catch (err) { console.log(err) return err } }
後面我會分享更多小程序相關的知識出來,請持續關注。ide