微信小程序 消息订阅 长期订阅 一次授权 多次接收 微信服务通知
微信小程序消息订阅一次授权 多次接收发送微信服务通知消息这里讲长期订阅!长期订阅!长期订阅!需求描述:–根据用户不同标签(租户、业主、维修师傅、居委会成员)一键向人员统一发送消息通知;例如:小区6栋6层以上停水一天,这个消息就需要向住户(租户业主)提前发送停水通知,向维修人员发送维修通知整体思路及需要:确认自己开发的小程序的主体是否拥有长期订阅的权限;可参照下图:(图片来自:微信开发社区:小程序模
微信小程序消息订阅 长期订阅 一次授权 多次接收 发送微信服务通知消息
这里讲长期订阅! 长期订阅! 长期订阅!
-
需求描述:
– 根据用户不同标签(租户、业主、维修师傅、居委会成员)一键向人员统一发送消息通知;例如:小区6栋6层以上停水一天,这个消息就需要向住户(租户业主)提前发送停水通知,
向维修人员发送维修通知 -
整体思路及需求:
- 需要按键调用在按键的方法里在指定也可,但必须是由按键进入!!!
- 确认自己开发的小程序的主体是否拥有长期订阅的权限;可参照下图:
(图片来自:微信开发社区:小程序模板消息能力调整通知) - 在微信小程序后台配置订阅模版;没有合适的可在社区申请,具体这次不讲;
- 用户唯一信息记录 openid(微信用户唯一标识);
- 调起用户授权,使用户授权;
- 后台同学推送消息
- 👌
代码分享
👍记得点赞哦 😄
👇大佬请看👇
-
存储openid,确定接收人员。
通过wx.login()获取用户信息(静默获取,无需授权),再返回的success中有code代码,通过官方的解析接口获得openid, 置换完档参照:(https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html)
注:code只有5分钟的有效时间
-
通过wx.getSetting获取用户是否给了订阅消息的权限(授权接收消息)
wx.getSetting({
withSubscriptions : true, // 获取订阅的授权信息 总开关
res.subscriptionsSetting.mainSwitch,// 里边还有可根据需求继续查看,
//不会可打印一步一步看(对应的是你模板的id)
例: 模板id:"accept" // (这个是:以授权模板消息订阅,可随时接收消息)`
- 调起授权界面(手动关闭或选择取消后此方法直接调用会走 fail 逻辑)不能直接调起
wx.requestSubscribeMessage({
tmplIds, // 模板id 数组类型
success: res => {
授权成功逻辑
},
fail: err => {
授权失败的逻辑,用户单击取消也在这
},
complete: () => {
无论成功失败
}
})
注:在用户选择取消或者通过小程序设置关闭通知,无法再调起授权界面处理 此时调用会在fail打印 requestSubscribeMessage:fail can only be invoked by user TAP gesture. 大概意思是请手动打开 wx.getSetting()里返回的状态消息也是false 但是再通过wx.requestSubscribeMessage()是调不动的,所以就得想起他的方式引导用户打开。
- 解决requestSubscribeMessage:fail can only be invoked by user TAP gesture.通过引导用户使其打开授权。
wx.openSetting({
success: res => {
console.log(res)
}
})
- 个人代码分享
方法名(){
let tmplIds = this.tmplIds // tmplId:【模板id】
wx.getSetting({
withSubscriptions : true,
success(res) {
var itemSettings = res.subscriptionsSetting.mainSwitch
if (itemSettings) {
console.log('已授权')
return
}else{
wx.requestSubscribeMessage({
tmplIds,
success: res => {
tmplIds.forEach(item => {
if (res[item] === 'reject') {
wx.showToast({
title: '此次操作会导致您接收不到通知',
icon: 'none',
duration: 2000,
})
}
})
},
fail: err => {
uni.showModal({ // uniapp框架
title: '请务必授权订阅消息',
content: '您没有授权消息通知,是否进行授权',
success: res => {
if (res.confirm) {
wx.openSetting({
success: res => {
console.log(res)
}
})
} else if (res.cancel) {
wx.showToast({
title: '此次操作会导致您接收不到通知',
icon: 'none',
duration: 2000,
})
}
},
fail: () => {},
complete: () => {}
});
},
})
}
},
fail:err => {
console.log(err.errMsg)
},
})
}
都看👓完了,就👍1️⃣👇吧
更多推荐
所有评论(0)