以前的模板消息推送,将在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