现在一次性订阅是只能用户点一次才能发送一次,而针对长期模板只有规定的几种类目政务、民生、交通等等的才可以,所以说感觉这功能其实已经不是很适合使用了,只适合一些特别的场景才可以使用。
地址: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 = truewx.showToast({title: '订阅成功',icon: 'success',duration: 2000})} else if (res['模板ID'] == 'reject') {this.alarmStatus = falsewx.showToast({title: '用户取消订阅',icon: 'error',duration: 2000})} else if (res['模板ID'] == 'ban') {this.alarmStatus = falsewx.showToast({title: '订阅已被封禁',icon: 'error',duration: 2000})} else if (res['模板ID'] == 'filter') {this.alarmStatus = falsewx.showToast({title: '订阅模板错误',icon: 'error',duration: 2000})}else {this.alarmStatus = falsewx.showToast({title: '订阅失败',icon: 'error',duration: 2000})}},fail (err) {this.alarmStatus = falsewx.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调试了,但是实际上这些调用应该是在服务端调用,防止信息泄露。