微信小程序目前支持一次性订阅模板消息,也就是首先在微信客户端用户允许订阅消息后,服务端可以按照指定模板推送消息给微信客服端,具体会在微信客户端的 服务通知 通知用户,可以快速跳转至微信小程序页面
在我之前文章 微信小程序-活动抽奖 中也有这种场景,用户使用抽奖小程序参与抽奖后,如果抽奖程序到了开奖时间,服务端会调用微信小程序订阅消息推送接口,以达到通知用户开奖提醒要求,从描述可以看出,代码主要分以下两部分:
一. 小程序客户端
参与抽奖界面.png
用户点击参与抽奖,调用小程序 wx.requestSubscribeMessage 方法,用户运行行为操作后,代码参考如下:
const version = wx.getSystemInfoSync().SDKVersion
if (pareVersion(version, '2.8.2') >= 0) { //同意接受服务通知
wx.requestSubscribeMessage({
tmplIds: ['一次性订阅tmplId'],
complete(res) {
}
})
}
二. 服务端
服务端根据实际场景调用小程序服务端 subscribeMessage.send 方法,我这示例是nodejs后台代码
微信订阅消息模板.png
const access_token = await this.getAccessToken() //获取access_token
const res = await axios.post(`https://api./cgi-bin/message/subscribe/send?access_token=${access_token}`,{
"touser": 'openid', //接收者(用户)的 openid
"template_id":'template_id', //所需下发的订阅模板id
"ht_ypE6PZGa5pCDrlX-2-FdfArpnz_JZ0ZkkKHGjLOA",
"page": "index?id=1",//页面路径
// "miniprogram_state": "developer",
"lang": "zh_CN",
"data": {
"thing5": {
"value": "小萱花抽奖奖品"
},
"thing2": {
"value": "点击查看详情"
},
"date3": {
"value": dayjs().format('YYYY-MM-DD HH:mm') //dayjs模块
},
"phrase4": {
"value": "开奖了"
}
}
}
)
微信端服务通知效果如下图:
微信服务通知.png
如果想了解更多效果可以微信扫描以下小程序码:
小萱花.jpg