# 小程序添加订阅消息
# 2020年初小程序取消了模板消息模块,全面采用订阅消息替换模板消息
目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,所以要使用一次性订阅消息。开发者可不限时间地下发一条对应的服务消息;每订阅一次仅可以发送一次消息。
- 先去微信后台开通订阅功能,设置需要的模板,获取模板ID
如果没有合适的模板,可以申请添加新模板,审核通过后可使用。
- 前端弹窗,提醒用户授权
对于我这边需要订阅两个消息,用户提交问题审核通过的消息,和有部门回复了该用户的消息(后面还要加追问的)
uni.requestSubscribeMessage({
tmplIds:['ZB7opRDBChEncSVh5','HwRKVtCt'],
success: function(res) {
console.log(JSON.stringify(res));
},
fail: function(res) {
console.log(JSON.stringify(res));
},
complete: (res) => {
console.log(res)
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
因为业务逻辑是用户可以发多个问题,对应不同的每个问题都要单独订阅2种状态(审核通过和部门回复),所以需要对问题id进行区分
let dyA =[]
uni.requestSubscribeMessage({
tmplIds:['ZB7opRDBChEnc','HwRKVtCt'],
success: function(res) {
console.log(res);
if(res['ZB7opRDBChEnc'] == 'accept'){
dyA.push('ZB7opRDBChEnc')
}
if(res['HwRKVtCt'] == 'accept'){
dyA.push('HwRKVtCt')
}
if(dyA.length > 0)
post(dyA,qid) //向服务端提交 订阅的问题id和该问题订阅的消息type,服务端进行筛选推送
},
fail: function(res) {
console.log(JSON.stringify(res));
},
complete: (res) => {
console.log(333,res)
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
注:在获取权限之前,需要用户已经登录,已记录过用户openid,因为发送订阅消息是通过用户的openid进行下发,如果没有用户openid,用户是无法获取到订阅消息的。
后端调用接口下发订阅消息
追问问题增加订阅消息 对提问的问题进行追问,追问可以看成在之前问题基础上 提出了新的问题,也要订阅审核状态和部门回复状态。