现在一次性订阅是只能用户点一次才能发送一次,而针对长期模板只有规定的几种类目政务、民生、交通等等的才可以,所以说感觉这功能其实已经不是很适合使用了,只适合一些特别的场景才可以使用。
地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html
一、先去小程序管理后台,添加订阅模板
二、页面让用户点击订阅(wx.requestSubscribeMessage
)
<button slot="right-icon" type="primary" @click="alarmSubScrube" size="mini">{{alarmStatus ? '已订阅':'立即订阅'}}</button>
方法
alarmSubScrube(e){
wx.requestSubscribeMessage({
tmplIds: ['模板ID'],
success (res) {
console.log(res);
if (res['模板ID'] == 'accept') {
this.alarmStatus = true
wx.showToast({
title: '订阅成功',
icon: 'success',
duration: 2000
})
} else if (res['模板ID'] == 'reject') {
this.alarmStatus = false
wx.showToast({
title: '用户取消订阅',
icon: 'error',
duration: 2000
})
} else if (res['模板ID'] == 'ban') {
this.alarmStatus = false
wx.showToast({
title: '订阅已被封禁',
icon: 'error',
duration: 2000
})
} else if (res['模板ID'] == 'filter') {
this.alarmStatus = false
wx.showToast({
title: '订阅模板错误',
icon: 'error',
duration: 2000
})
}else {
this.alarmStatus = false
wx.showToast({
title: '订阅失败',
icon: 'error',
duration: 2000
})
}
},
fail (err) {
this.alarmStatus = false
wx.showToast({
title: err.errCode + err.errMsg,
icon: 'error',
duration: 2000
})
}
})
},
三、发送订阅信息(使用postman
来测试)
地址:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html
(1)从参数可以看到,我们要先拿到access_token
接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential
在管理后台获取小程序的appID和secret密钥
(2)获取用户的openID
在页面调用wx.login
实际业务逻辑应该是用户在页面出发wx.loin的时候获取到的code,然后后端请求获取到openID,存在用户信息上
(3)发送订阅信息
接口:https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=上面获取到的token
参数
{
"touser": "用户openID",
"page": "pages/warnInfo/warnInfo?id=9ec7c41c16db4a0eb29396bc6db79e77", //点击通知进入的页面
"lang": "zh_CN",
"data": {
//这些字段都是有字符要求的,请仔细看文档
"character_string6": {
"value": "SH079600022031"
},
"thing1": {
"value": "测试"
},
"thing2": {
"value": "扬尘噪声黄色报警"
},
"time3": {
"value": "2023-10-19 01:00"
},
"thing4": {
"value": "监测到pm.25达到82.0 ug/㎡"
}
},
"template_id": "模板ID",
"miniprogramState": "trial" //developer为开发版;trial为体验版;formal为正式版;默认为正式版
}
(4)错误码
(5)效果
以上就可以实现用户点击订阅,然后我们用postman调试了,但是实际上这些调用应该是在服务端调用,防止信息泄露。