2019 年 10 月 12 日,微信团队在微信开放社区发布一则公告:小程序模板消息能力调整通知。即微信小程序即将要下线消息模板通知功能,采用订阅消息服务通知。至于订阅消息和消息模板功能在推送消息通知上有什么区别,可以点击这里查看官方公告。
小程序订阅消息和模板消息最大的差别,个人认为是主动订阅消息和被动接收消息。小程序订阅消息需要用户主动订阅,而且默认情况下是非静默式触发。模板消息则是在用户点击或者提交表单的情况下产生推送凭证,默认情况下是可以静默式收集凭证。
模板消息是通过推送凭证 formid 进行服务消息通知推送。formid 是有时效性的,从产生凭证开始,七天内有效。订阅消息则是通过对订阅模板触发记录推送,每订阅一次就只能推送一次,没有时效性,不受时间限制,受订阅次数限制。
订阅消息需要通过微信小程序提供的 API 触发订阅机制。API 示例如下:
wx.requestSubscribeMessage({
tmplIds: [''], // 订阅消息模板 ID 列表
success (res) { }
})
API 参数如下:
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
tmplIds | Array | 是 | 需要订阅的消息模板的id的集合(注意:iOS客户端7.0.6版本、Android客户端7.0.7版本之后的一次性订阅/长期订阅才支持多个模板消息,iOS客户端7.0.5版本、Android客户端7.0.6版本之前的一次订阅只支持一个模板消息)消息模板id在[微信公众平台(mp.weixin.qq.com)-功能-订阅消息]中配置 | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
订阅成功后,回调的参数主要有两个:errMsg 和 TEMPLATE_ID 。errMsg:接口调用成功时errMsg值为'requestSubscribeMessage:ok'
。TEMPLATE_ID:[TEMPLATE_ID]是动态的键,即模板id,值包括'accept'
、'reject'
、'ban'
。'accept'
表示用户同意订阅该条id对应的模板消息,’reject’表示用户拒绝订阅该条id对应的模板消息,’ban’表示已被后台封禁。例如 { errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"}
表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息。
订阅成功的回调参数有个坑:获取用户对某个订阅消息模板状态相对麻烦。因为 TEMPLATE_ID 是一个动态的键,因此,无法通过 res.TEMPLATE_ID 获取订阅消息模板的状态是 ‘accept’、’reject’、’ban’ 中的哪一个。如何获取这个状态,这就每个开发者通过自己的方法进行尝试了。
注意:wx.requestSubscribeMessage 只能使用在 bindtap 动作里。否则会提示:requestSubscribeMessage:fail can only be invoked by user TAP gesture
本文出处:WordPress 小程序技术博客
暂无评论