评论

「笔记」订阅消息-订阅次数维护

在社区里经常能看到有帖子在问关于怎么记录订阅次数的问题,这里在这里介绍一下自己用的简单方案,仅供参考。

前言

距离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月更新改动)
「笔记」订阅消息体验踩坑

最后一次编辑于  2020-03-06  
点赞 18
收藏
评论

18 个评论

  • 虫子
    虫子
    05-23

    在南航小程序订阅页中,南航能判断到某一模板用户关闭消息接收,从而清空已累计的订阅次数,请问楼主,南航是如何实现的?

    05-23
    赞同
    回复 1
  • Lal
    Lal
    2022-02-09

    楼主,如果勾选了总是允许,我怎么统计次数呢

    2022-02-09
    赞同
    回复
  • 李刚
    李刚
    2021-09-25

    有办法获取到用户是否选择了「总是保持以上选择,不再询问」?



    2021-09-25
    赞同
    回复 1
    • 拾忆
      拾忆
      2021-09-25
      没有
      2021-09-25
      回复
  • 🚶
    🚶
    2021-06-06

    调用wx.requestSubscribeMessage向用户要求发一次性订阅消息权限的时候,如果选择确定的同时还选择了总是保持以上选择,wx.requestSubscribeMessage的订阅弹框就不再出现。

    在选择确定的同时选择“总是保持以上选择”,然后又在设置里面把接收消息通知给关闭了,过后又打开,但是实际情况来说他再也没接收到订阅消息


    这种情况怎么解决呢

    2021-06-06
    赞同
    回复 3
    • 拾忆
      拾忆
      2021-06-06
      设置接收消息里只要关闭了,之前所有累计的订阅次数都会失效,需要重新引导用户去订阅才可以。
      2021-06-06
      1
      回复
    • tu
      tu
      2021-09-01回复拾忆
      大坑啊,要是有接口可以直接查可以发多少次就好了
      2021-09-01
      回复
    • 拾忆
      拾忆
      2021-09-01回复tu
      没有,自从这个接口出来都是自己统计。
      2021-09-01
      回复
  • 淇小淇
    淇小淇
    2020-09-02

    请问如果在第一次弹出订阅框时,选择了“总是保持巴拉巴拉巴拉”,是下次需要弹出订阅提醒时不弹出了吗?那用户如何选择订阅呢?

    2020-09-02
    赞同
    回复 4
    • 拾忆
      拾忆
      2020-09-02
      用户订阅还是需要用户去点击按钮
      2020-09-02
      回复
    • 淇小淇
      淇小淇
      2020-09-02回复拾忆
      用户点击订阅后,不会弹窗,并且默认允许或者拒绝,我的理解对吧
      2020-09-02
      回复
    • 拾忆
      拾忆
      2020-09-02
      是的
      2020-09-02
      回复
    • 淇小淇
      淇小淇
      2020-09-02回复拾忆
      好的,谢谢你,另外想请教一下,如果用户允许推送一次,有两个模板,而本次订单只触发推送了A模板,那么B模板是会累计的吗?等到下个订单再次允许推送一次,却触发推送B的条件时,就会推送两条一毛一样的B,是这样吗
      2020-09-02
      回复
  • Maple 🍁
    Maple 🍁
    2020-08-19

    请问同一个订阅可以多次推送么? 比如用户下单通知, 同一个订单用户很可能取消了,再次下单,这样第二次就没办法 提醒了。

    2020-08-19
    赞同
    回复 2
    • 拾忆
      拾忆
      2020-08-19
      不可以,一个订阅只能推送一次,但是一次可以最多同时订阅3个模板
      2020-08-19
      回复
    • Maple 🍁
      Maple 🍁
      2020-08-20回复拾忆
      好吧,谢谢 之前看到了 果然不行。有些坑
      2020-08-20
      回复
  • Tuddy
    Tuddy
    2020-07-29

    请问订阅成功后,发送消息一般都是后台调 还是前台调呀

    2020-07-29
    赞同
    回复 2
    • 拾忆
      拾忆
      2020-07-29
      后台
      2020-07-29
      回复
    • Tuddy
      Tuddy
      2020-07-29回复拾忆
      好的  谢谢
      2020-07-29
      回复
  • 我的世界
    我的世界
    2020-05-12

    如果用户选择了不再接收消息会清空之前的订阅次数,但是这个不会主动告诉开发者,所以发送订阅消息失败后,需要根据返回内容自行清空记录,重新计算。

    我觉得大佬的这个点,给了很大的启示,之前为了解决发送用户太多所以用了数据库,但是没考虑数据库数目>微信累计次数时,数据库此时不做任何处理,下次还是会发一些无效的请求。感谢!

    2020-05-12
    赞同
    回复 3
    • 拾忆
      拾忆
      2020-05-12
      不用谢,都是踩过坑的人。
      2020-05-12
      回复
    • ssq_qin
      ssq_qin
      2020-06-18回复拾忆
      大神,,对于次数推送成功减一,,,怎么实现的呢,,前端怎么能检测到已经推送成功了呢
      2020-06-18
      回复
    • 拾忆
      拾忆
      2020-06-18
      这个需要自己去记录操作的,至于怎么弄就看你自己了,可以订阅一次加一条记录,发送后删除一条记录,或者每个用户一条记录,然后用字段去保存条数。
      2020-06-18
      回复
  • 太有才了丶
    太有才了丶
    2020-04-30

    大佬你好 所以现在想经可能多的推送只能引导用户设置“总是保持操作”然后所有的tap交互事件借鉴以前手机formid的方式各种静默调用 requestSubscribeMessage 储存尽量多的次数供发送?

    2020-04-30
    赞同
    回复 1
    • 拾忆
      拾忆
      2020-05-04
      是的
      2020-05-04
      回复
  • 岑跑跑🥳
    岑跑跑🥳
    2020-03-21

    其实这样就没必要用数据库记录下来了,直接后台推送即可。反正推送成功不成功都不影响自己的主业务,反正前端每次操作之前都会提示 消息订阅,拒绝了再调用设置功能

    2020-03-21
    赞同
    回复 2
    • 拾忆
      拾忆
      2020-03-21

      如果几万个用户,每次都去试一遍?对后端的服务器是有多大的自信呢?

      2020-03-21
      回复
    • 岑跑跑🥳
      岑跑跑🥳
      2020-03-21回复拾忆
      后台不用试啊,直接传对应的模板id调用微信推送消息的接口不就好了,数据库都不用查询了。
      2020-03-21
      回复

正在加载...

登录 后发表内容