不同点
与「模板消息」不同的是,其是在用户点击触发或者支付成功之后,开发者可在 7天内推送1-3条服务通知。而「订阅消息」则需要用户主动订阅消息通知,开发者才可向用户推送,但不受时间限制,具体发送信息条数根据该能力的不同类型有不同标准。
此外,值得注意的是,使用「订阅消息」后,原小程序模板消息接口将于2020年1月10日下线,也就无法再使用原接口推送模板消息,开发者们需要注意及时调整接口。但是,微信服务号模板消息暂不受影响。
特点
1、选择权回到用户手中。在小程序中,「订阅消息」像是一个开关,需要用户主动点击授权之后,小程序才能向其推送服务通知,当然,用户也可以随时拒收该小程序的服务通知。而此前,用户只能被动地接收消息。
2、时长不受限制。「订阅消息」取消了7天内推送消息的时间限制,只要用户没有主动拒收消息推送,开发者就可以随时推送服务通知。对于服务周期超过7天的小程序而言,这就完美解决了此前的疑虑。
好了那我们来看看如何使用这个订阅消息吧~
简述大概流程
小程序端发起的授权弹窗过程
顺便说一下如何获取用户授权信息wx.getting,及当用户关闭授权如何跳到设置授权页一条龙服务,附上其他诸多问题
授权后服务端下发订阅消息流程
整理一下订阅发送各参数的具体意思,虽然文档有,但是有例子的话对着看更好理解
搜集解疑各种疑难杂症
小程序端发起的授权弹窗过程
调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。
留意文档中的这句话 → 如果用户之前设置过不在询问的话,其实是调不起授权弹窗的,那我们怎么获取用户的授权信息呢?
wx.getSetting可以获取这些信息:对应的wx.getting文档
文档后面有示例代码这边就不在贴出来了
如果要获取 订阅消息的订阅状态 需要设置 withSubscriptions 为true即可(默认为false,不开不获取),成功获取后 authSetting 是有关于用户的一些权限,而 subscriptionsSetting 则是我们需要的订阅权限信息,里面有一个总开关 mainSwitch 就是你是否接受当前小程序的订阅信息,如果这个为false的话其实你根本调不起弹窗,那小伙伴就会问如果我要让他知道关闭了权限并且怎么引导他去开呢?
先贴出代码:
发送订阅消息逻辑处理
const SUBSCRIBE_ID = 'RHPuVfEyGe0q0n7lZyzz4r-zyGe07lZyzz4r3' // 模板ID
goCollectSet() {
let that = this;
if (wx.requestSubscribeMessage) {
wx.requestSubscribeMessage({
tmplIds: [SUBSCRIBE_ID],
success(res) {
if (res[SUBSCRIBE_ID] === 'accept') {
// 用户主动点击同意...do something
} else if (res[SUBSCRIBE_ID] === 'reject') {
// 用户主动点击拒绝...do something
} else {
wx.showToast({
title: '授权订阅消息有误',
icon: 'none'
})
}
},
fail(res) {
// 20004:用户关闭了主开关,无法进行订阅,引导开启
if (res.errCode == 20004) {
// 显示引导设置弹窗
that.setData({
isShowSetModel: true
})
}else{
// 其他错误信息码,对应文档找出原因
wx.showModal({
title: '提示',
content: res.errMsg,
showCancel: false
})
}
}
});
} else {
wx.showModal({
title: '提示',
content: '请更新您微信版本,来获取订阅消息功能',
showCancel: false
})
}
}
【wx.requestSubscribeMessage文档】
简述一下上面的代码,goCollectSet 方法则是授权订阅消息权限执行的方法,由于 wx.requestSubscribeMessage 需要基础库 2.4.4 后才支持,因此我们要做个判断,如果发现用户当前微信没有此方法,则提示更新微信版本;然后 tmplIds Array字段里面是填对应的订阅模板ID
【问】订阅模板ID哪里获取、哪里新建呢?
·
【答】
微信公众号平台 登录后,如果有多个小程序,选择当前开发的小程序,成功进入界面后,在 功能 板块 -> 订阅消息,里面可以新建模板也可以使用公共订阅模板,有模板的话直接复制对应的ID