前言
不知何时官方更新了 查询模板订阅状态接口 的返回格式,导致之前的判断逻辑不可用,于是梳理了一下最新的用法。
查询模板订阅状态 接口
需要基础库大等于2.10.0才支持。
wx.getSetting({
withSubscriptions: true,
success (res) {
console.log(res)
}
})
新的返回格式
res.subscriptionsSetting = {
mainSwitch: true, // 订阅消息总开关
itemSettings: { // 每一项开关
zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject',
ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban'
},
zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject',
ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban'
}
旧的返回格式
res.subscriptionsSetting = {
zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject',
ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban'
}
对比以上两段代码可以发现,新的返回增加了一个mainSwitch,以及多了一层itemSettings。
假设在原有的判断逻辑不变的情况下,当mainSwitch为false状态的时候,清空当前用户所有的订阅记录,反之再判断itemSettings内的每一项状态是否为accept,如果非accept则删除订阅记录,这样就可以和原来一样了。
可以参考我之前发的 订阅消息-订阅次数维护 与本文结合一起看。
附:订阅消息参数值内容限制说明
参数类别 | 参数说明 | 参数值限制 | 说明 |
---|---|---|---|
thing.DATA | 事物 | 20个以内字符 | 可汉字、数字、字母或符号组合 |
number.DATA | 数字 | 32位以内数字 | 只能数字,可带小数 |
letter.DATA | 字母 | 32位以内字母 | 只能字母 |
symbol.DATA | 符号 | 5位以内符号 | 只能符号 |
character_string.DATA | 字符串 | 32位以内数字、字母或符号 | 可数字、字母或符号组合 |
time.DATA | 时间 | 24小时制时间格式(支持+年月日) | 例如:15:01,或:2019年10月1日 15:01 |
date.DATA | 日期 | 年月日格式(支持+24小时制时间) | 例如:2019年10月1日,或:2019年10月1日 15:01 |
amount.DATA | 金额 | 1个币种符号+10位以内纯数字,可带小数,结尾可带“元” | 可带小数 |
phone_number.DATA | 电话 | 17位以内,数字、符号 | 电话号码,例:+86-0766-66888866 |
car_number.DATA | 车牌 | 8位以内,第一位与最后一位可为汉字,其余为字母或数字 | 车牌号码:粤A8Z888挂 |
name.DATA | 姓名 | 10个以内纯汉字或20个以内纯字母或符号 | 中文名10个汉字内;纯英文名20个字母内;中文和字母混合按中文名算,10个字内 |
phrase.DATA | 汉字 | 5个以内汉字 | 5个以内纯汉字,例如:配送中 |
大佬 我点击始终允许后
我要获取订阅消息的信息 无法获取
wx.getSetting({ withSubscriptions: true, ..... }
大佬,我现在有一个问题。就是现在用户点击总是允许的接受通知后,下次就不弹出授权框了。也收不到服务通知。这个怎么解决?
如果要让用户重新出现弹窗,需要让用户点击小程序右上角进入小程序设置页,关闭订阅消息再重新打开就行,但是之前所有的订阅次数都会失效。
thing.DATA,传参写了10个字符为什么通知只显示5个字符
楼主你好,看了你写的三篇 关于小程序订阅消息的文章。我的理解是,一次订阅可以最多3个模板,但是发送只能3选1的发送一次的意思么?而不是一次订阅,我后台可以不同时段可以分别发送3个模板各一次对吧。希望看到回复。我现在业务是这样,做一个在线维修的业务员,订单创建,后用户点击允许3个模板,然后后续有维修员接单,推送一次。接着维修完成再推送一次。看来我这个业务是无法实现了是吗?只能推送3个模板的一条。
请问订阅弹框里要显示的3个模板,可以自定义模板吗?
大佬,一次性订阅消息,如果我点击了“总保持以上选择,不再询问”情况下,后台发送的模板次数超过了最大发送次数被官方拒绝后,有办法再次重置该模板消息次数吗?
您好,请问点击订阅消息(服务消息)进入页面后 怎样获取后台URL中的参数啊? wxMssVo.setPage("pages/cloud/manager/show?openid=" +openid); 比如我进入show页面后,怎样在页面上获取openid啊? 谢谢
小程序订阅消息的推送是不是有延迟啊?不同的订单 都点击了授权 第一次有收到 第二次就收不到了
大佬 ,模板一直报错43101、我想在小程序上传作业的时候,点击上传的时候,触发订阅,如果下发通知成功,则上传作业,但是一直宝座43101,怎么解决下
第一个问题:如何让用户多次订阅?
第二个问题:一次性订阅最多能让用户订阅多少次?
问题二,点一次订阅一次,最多可以同时允许3个模板,就是3次。