消息能力是小程序能力中的重要组成,以便实现服务的闭环和更优的体验。 此前的小程序模板消息接口于2020年1月10日下线(我们开发者太难了…),2.10.0 版本开始,开发版和体验版小程序将禁止使用模板消息 fomrId。开发者可使用订阅消息功能。订阅消息特点:
- 订阅消息推送位置:服务通知
- 订阅消息下发条件:用户自主订阅
- 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面
订阅消息的使用主要以下几个步骤:
- 获取模板 ID
- 获取下发权限
- 调用接口下发订阅消息
根据我的理解和结合系统,对订阅消息功能总结了一个流程图,下面会有每一步的详细操作及代码
1. 获取模板ID
在微信公众平台手动配置获取模板 ID,登录 微信开发者平台 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
一次性订阅和长期订阅
- 一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。
- 一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
2. 获取下发权限
订阅消息的发送同时还需要用户同意接收,否则用户将不会收到消息。在小程序中需要调用下面API,调起客户端小程序订阅消息界面。
由于开发文档写的细节不够到位,可能会遇到许多坑。
- 这个发送订阅消息的API无法在模拟器上生效,必须是真机调式状态下才可正常使用。
- 需要写回调函数才能生效。原理自己去了解吧…
wx.requestSubscribeMessage({
// 你理解为询问用户,愿不愿意接收这个模板的订阅消息
tmplIds: [''], //模板ID
success(res) {
console.log('已授权接收订阅消息')
},
complete(res) {
console.log(res)
}
})
3. 调用接口下发订阅消息
参考下发订阅消息官方文档:发送订阅消息
3.1 https请求
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
调用接口url:https://api.weixin.qq.com/cgi-bin/message/subscribe/send
请求方式method:POST
请求参数data:access_token
所以我们首先需要拿到到的是参数:access_token(后台接口调用凭据),参考官方API 文档,我自己实践了一下,请参考:获取access_token
3.2 POST请求体参数
post请求体中对应的参数,必须是json格式。注意仔细看官方文档,切记,格式很重要!!!
//介绍一下几个必须填写的请求参数
access_token:接口调用凭证
touser:接收者(用户)的 openid
template_id:所需下发的订阅模板id
data:模板内容,格式形如 {
"key1": {
"value": any }, "key2": {
"value": any } }
//更多仔细查看官方API文档<