微信订阅消息通知目前有两种方式,一种为长期订阅即订阅一次可无限期发送消息,一种为一次性订阅即订阅一次消息通知接收一次消息通知,首先从前端来说发送消息即为获取订阅消息授权,调微信发送消息通知接口即可成功,接下来为详细说明,
首先获取微信订阅消息授权
requestMessage() {
var tmplIds = '' // 此处是你的模板id,可在小程序
// 这里是获取下发权限地方,根据官方文档,可以根据 wx.getSetting() 的 withSubscriptions 这个参数获取用户是否打开订阅消息总开关。后面我们需要获取用户是否同意总是同意消息推送。所以这里要给它设置为true 。
wx.getSetting({
withSubscriptions: true, // 这里设置为true,下面才会返回mainSwitch
success: function(res) {
// 调起授权界面弹窗
var itemSettings = res.subscriptionsSetting.itemSettings;
if (itemSettings) {
if (itemSettings[tmplIds] != 'accept') { // 用户打开了订阅消息总开关
// 每次执到这都会拉起授权弹窗
wx.showModal({
title: '提示',
content: '请授权开通服务通知',
showCancel: true,
success: function(ress) {
if (ress.confirm) {
// console.log('用户点击确定')
wx.requestSubscribeMessage({ // 调起消息订阅界面
tmplIds: [tmplIds],
success(res) {
console.log('订阅消息 成功 ');
// console.log(res);
},
fail(er) {
console.log("订阅消息 失败 ");
// console.log(er);
}
})
} else if (ress.cancel) {
// console.log('用户点击取消')
}
}
})
} else {
console.log('订阅消息已经开启')
}
} else {
wx.showModal({
title: '提示',
content: '请授权开通服务通知',
showCancel: true,
success: function(ress) {
if (ress.confirm) {
// console.log('用户点击确定')
wx.requestSubscribeMessage({ // 调起消息订阅界面
tmplIds: [tmplIds],
success(res) {
console.log('订阅消息 成功 ');
// console.log(res);
},
fail(er) {
console.log("订阅消息 失败 ");
// console.log(er);
}
})
} else if (ress.cancel) {
// console.log('用户点击取消')
}
}
})
}
},
fail: function(error) {
console.log(error);
}
})
},
之后调用微信接口
https://api.weixin.qq.com/cgi-bin/token
此接口需要appid secret,此参数可在微信公众平台查看
获取到access_token,再发送消息接口中会用到这个参数
之后调用https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN,
此接口需要模板id、用户的openid,data模板消息内容,即可发送给对应用户消息通知了