发布时间:2024-07-25 13:01
本文主要详细介绍关于微信小程序的消息订阅功能的开发流程,尽可能详细的进行分析开发,使之成为一篇具有参考意义的文章。
自从微信官方取消了模板消息,订阅消息逐步出现在大众的视野。大家如果想了解一下 模板消息 和 订阅消息他们直接的区别,可以看一下这篇文章 微信小程序可以向用户推送消息吗? 当然看不看都无所谓,因为模板消息已经彻底再见了。我们还是多关注关注我们的订阅消息吧。
在这里,先提供几个官方的参考文档:
小程序订阅消息
小程序端消息订阅接口 wx.requestSubscribeMessage
服务端消息发送接口 subscribeMessage.send
好了,废话不多说,进入正题。
订阅消息就是需要用户主动订阅,开发者才能面向这些用户发送消息。
主要内容:
订阅消息类型:
目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
微信小程序实现订阅消息发送一共需要分为三步来实现:
在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com/wxamp/newtmpl/mytmpl?start=0&limit=10&token=30714040&lang=zh_CN 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
在我们发送小程序的订阅消息之前我们需要用户自己来决定是否需要接受到订阅消息,以及是否选择 “总是保持以上选择,不再询问” 选项。
注意:用户勾选 “总是保持以上选择,不再询问” 之后,下次订阅调用 wx.requestSubscribeMessage
不会弹窗,保持之前的选择,修改选择需要打开小程序设置进行修改。
实现方法:wx.requestSubscribeMessage(Object object)
wx.requestSubscribeMessage({
tmplIds: ['MUtLwsw0xCndRULTgNHiXwGDyHJ-xx'], // 模板ID
success (res) {
// 成功的回调
console.log(res)
}
})
当用户同意接受订阅消息,实现第三步之后就可以接收到订阅消息了,如果用户拒绝接收的话,即使执行完第三步用户也不会接收到订阅消息。
调用下发订阅消息接口
小程序端代码:
// index.wxml
<button bindtap="sendMessage">发送订阅消息</button>
// index.js
// 点击发送订阅消息
sendMessage: function(e) {
wx.request({
url: 'https://xxx/xx/sendMessage',
method: 'POST',
data: { },
success(res) {
console.log(res)
}
})
}
定义发送订阅消息接口
这部分内容主要是在服务端进行调用,具体使用请移步至 服务端消息发送接口 subscribeMessage.send 微信官方文档进行查看。
在这里主要介绍一下里面的几个重点关注的内容:
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
服务端(nodejs koa2)代码实例:
// index.js
const router = require('koa-router')()
const request = require('superagent')
let AppID = 'xxxxx'
let AppSecret = 'xxxxx'
let access_token = 'xxxxx'
let openid = 'xxxxx'
// 点击发生订阅消息
router.post('/xx/sendMessage', async (ctx, next) => {
let requestData = {
"touser": openid,
"template_id": "MUtLwsw0xCndRULTgNHiXwGDyHJ-xx",
"page": "index",
"data": {
"phrase1": {
"value": "王小二"
},
"date5": {
"value": "2019年10月1日 15:01"
},
"phrase4": {
"value": "王老师"
}
}
}
// 2、发送模板消息
let res = await request
.post(`https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${access_token}`)
.send(requestData)
.set('Accept', 'application/json')
console.log(res)
ctx.body = {
code: '200',
data: null,
msg: '操作成功'
}
})
至此,通过上面这三个步骤,基本上就可以实现订阅消息发布的功能了,上面的部分代码我只是截取了一部分,但是一些重要的代码以及流程全部正常,感兴趣的朋友可以亲自试一下,有任何问题欢迎评论区留言讨论。
HaaS轻应用(Python):基于HaaS-AI的文字识别
【历史上的今天】7 月 18 日:英特尔成立;万维网上传了第一张照片;eBay 分拆 PayPal
【Python】用Python制作可视化GUI界面,一键实现自动分类管理文件!
Kubernetes服务质量保证之配置容器资源limits和requests
Python爬虫实战,requests模块,Python实现IMDB电影top数据可视化
关于BootstrapTable 导出数据的问题最终解决方案
Classfication of Flow-Shop Scheduling Problems(流水车间调度问题的分类)