前言
距离1月10日模板消息下架只有2天了,在社区里经常能看到有帖子在问关于怎么记录订阅次数的问题,这里在这里介绍一下自己用的简单方案,仅供参考。
误区一
上面这个图大家应该都比较熟悉了,很多人总是误以为勾选“总是保持以上选择,不再询问”,就可以无限发送订阅消息,这个是错误的想法,勾选和不勾选唯一的区别就是每次触发订阅的时候会不会弹授权窗口而已。
误区二
订阅消息不能通过bindsubmit的方式触发,必须通过bindtap的方式触发。
误区三
触发订阅窗口后,不管用户点击了允许还是取消,都会进入订阅消息的success回调中,所以通过这个来判断用户是否订阅是错误的。
订阅次数的维护
先看下官方的文档:
那么我们该如何使用呢?
我们通过 wx.requestSubscribeMessage 接口发送的时候是知道需要让用户订阅哪几个模板的,就是 tmplIds 这个参数填的数组。那么根据官方文档的回调内容,我们就可以直接在success内去获取对应的key所返回的状态。把获取到的状态分别存入自己的数据库里。发送的时候去数据库里查询需要发送的模板并且状态为accept的去发送,如果发送成功则删除一条记录(因为没有过期一说,所以随便删除哪一条记录都不影响)。
参考代码
查询模板订阅状态
需要基础库大等于2.10.0才支持。
wx.getSetting({
withSubscriptions: true,
success (res) {
console.log(res)
}
})
官方文档
补充
如果用户选择了不再接收消息会清空之前的订阅次数,但是这个不会主动告诉开发者,所以发送订阅消息失败后,需要根据返回内容自行清空记录,重新计算。
在南航小程序订阅页中,南航能判断到某一模板用户关闭消息接收,从而清空已累计的订阅次数,请问楼主,南航是如何实现的?
「笔记」订阅消息-订阅次数维护(2020年3月更新改动)
https://developers.weixin.qq.com/community/develop/article/doc/00006c837bcf68ef2b0a0b7745b813
楼主,如果勾选了总是允许,我怎么统计次数呢
有办法获取到用户是否选择了「总是保持以上选择,不再询问」?
调用wx.requestSubscribeMessage向用户要求发一次性订阅消息权限的时候,如果选择确定的同时还选择了总是保持以上选择,wx.requestSubscribeMessage的订阅弹框就不再出现。
在选择确定的同时选择“总是保持以上选择”,然后又在设置里面把接收消息通知给关闭了,过后又打开,但是实际情况来说他再也没接收到订阅消息
这种情况怎么解决呢
请问如果在第一次弹出订阅框时,选择了“总是保持巴拉巴拉巴拉”,是下次需要弹出订阅提醒时不弹出了吗?那用户如何选择订阅呢?
请问同一个订阅可以多次推送么? 比如用户下单通知, 同一个订单用户很可能取消了,再次下单,这样第二次就没办法 提醒了。
请问订阅成功后,发送消息一般都是后台调 还是前台调呀
如果用户选择了不再接收消息会清空之前的订阅次数,但是这个不会主动告诉开发者,所以发送订阅消息失败后,需要根据返回内容自行清空记录,重新计算。
我觉得大佬的这个点,给了很大的启示,之前为了解决发送用户太多所以用了数据库,但是没考虑数据库数目>微信累计次数时,数据库此时不做任何处理,下次还是会发一些无效的请求。感谢!
大佬你好 所以现在想经可能多的推送只能引导用户设置“总是保持操作”然后所有的tap交互事件借鉴以前手机formid的方式各种静默调用 requestSubscribeMessage 储存尽量多的次数供发送?
其实这样就没必要用数据库记录下来了,直接后台推送即可。反正推送成功不成功都不影响自己的主业务,反正前端每次操作之前都会提示 消息订阅,拒绝了再调用设置功能
如果几万个用户,每次都去试一遍?对后端的服务器是有多大的自信呢?