评论

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

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

前言

距离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 个评论

  • zyp
    zyp
    2020-03-06

    如果勾选了“总是保持以上选择,不再询问”,并点允许,是不是用户24小时内未活跃,超过24小时后就不能给用户发送订阅消息了?或者说有其他规则?目前出现一种情况:勾选总是保持以上选择后,有用户收到4次消息、有用户收到七八次的样子,然后就再也收不到了,表示摸不清这其中的规则

    2020-03-06
    赞同
    回复 3
    • 拾忆
      拾忆
      2020-03-06
      一次性订阅消息没有过期限制,只有次数限制,订阅次数就是发送次数。
      2020-03-06
      回复
    • zyp
      zyp
      2020-03-06回复拾忆
      比如用户第一次点订阅的时候,就点的允许并勾选总是保持以上选择,后面如果没有点击订阅操作的话,就只能收到1次订阅消息?“总是保持以上选择,不再询问”只是控制用户下次订阅操作时,授权弹框的出现与否对吗?
      2020-03-06
      回复
    • 拾忆
      拾忆
      2020-03-06
      是的。
      2020-03-06
      回复
  • EmeraldDream
    EmeraldDream
    2020-03-03

    不需要formId了是吗?


    2020-03-03
    赞同
    回复 1
    • 拾忆
      拾忆
      2020-03-03
      没有formid了
      2020-03-03
      回复
  • 仅此丶而已。
    仅此丶而已。
    2020-02-26

    我用小程序体验版订阅消息,后台服务发送消息 返回的OK,但是微信服务通知里确没有收到消息?

    string Url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+ token;

                    var postdata = new

                    {

                        touser = openId,

                        template_id = templeteId,

                        page = "pages/index/index",

                        data = new

                        {

                            thing1 = new

                            {

                                value = "今日行程"

                            },

                            date2 = new

                            {

                                value = "2020-02-20"

                            },

                            thing4 = new

                            {

                                value = "请做好准备,即将出发"

                            }

                        }

                    };

                    wenXinResult = HttpHelper.HttpPostJson(Url, JsonHelper.Serialize(postdata), false);

    wenXinResult 里返回的是成功!服务通知里确没有收到消息,请教下这是什么原因呢?



    2020-02-26
    赞同
    回复
  • Wang
    Wang
    2020-01-11

    看标题以为是找到了能够收集订阅权限次数无限推送的方法,原来。。。这个操作感觉是基础操作啊!

    2020-01-11
    赞同
    回复 1
    • 拾忆
      拾忆
      2020-01-11
      无限推送?想太多了~不可能~
      2020-01-11
      回复
  • 郭董杰
    郭董杰
    2020-01-09

    以前的模板消息需要记录,现在换成这玩意了,还记个啥呀,能推就推,引导用户关注公众号,100%必推的肯定要其他方式

    2020-01-09
    赞同
    回复
  • 超速蜗牛
    超速蜗牛
    2020-01-08

    一直在考虑这个问题,存订阅次数 意义是什么?如果你存的次数是0 就不推送了吗?你能保证你的次数跟微信获取的授权次数严格相等吗?

    2020-01-08
    赞同
    回复 10
    • 拾忆
      拾忆
      2020-01-08

      不完全相等,但是总比盲推好。

      2020-01-08
      回复
    • momo
      momo
      2020-01-08
      有些情况是需要记录的,因为用户指定了哪些事件需要通知他,所以要记录那些事件。实话说一次性订阅对于开发者来说太鸡肋,重改程序,以后长期订阅出来还要再改一次,一次性远没有长期的好。模板消息都已经习惯了,也不知为何说改就改了。(模板消息当时就有人建议搞一个长期的,哎,改来改去,对于有些小程序的用户来说,这个操作是给他们也增加了麻烦,比如人家想每个事件都要收通知,结果还要每个事件都特意来点一次才能收到)
      2020-01-08
      回复
    • 拾忆
      拾忆
      2020-01-08
      长期订阅消息你确定你就有资格吗?我觉得这个希望也不太大。
      2020-01-08
      回复
    • momo
      momo
      2020-01-08回复拾忆
      嗯,是啊,哎,啥也不说了,祝福微信小程序越做越好吧
      2020-01-08
      回复
    • 拾忆
      拾忆
      2020-01-08回复momo
      我觉得你不是在说真心话~emmm~
      2020-01-08
      回复
    查看更多(5)
  • momo
    momo
    2020-01-08

    用户收到的服务通知里的每条消息下有一个“不再接收”,如果用户好奇试着点击了“不再接收此类消息”看看啥样子,看完后,然后呢又点击了“接收消息”,那你记录的订阅次数就不准确了,因为“不再接收”的同时就确定了订阅次数为0了,可是你的数据库还没有改过来,你怎么处理这样的事

    2020-01-08
    赞同
    回复 9
    • 拾忆
      拾忆
      2020-01-08
      那个需要根据下次发送消息回调去判断,我之前测试,不再接收消息后再打开,没有重新订阅的情况下还是能发送的。
      2020-01-08
      回复
    • momo
      momo
      2020-01-08回复拾忆
      我之前也试过,跟你之前测试的一样,同一天试的,中午还可以,但下午就不行了,只要有过取消授权,之前的订阅就为0了。我判断中午所谓的可以那是延迟收到的消息。
      2020-01-08
      回复
    • 拾忆
      拾忆
      2020-01-08
      或许是最近又改规则了?我问问官方看看。
      2020-01-08
      回复
    • 拾忆
      拾忆
      2020-01-08
      官方确认了用户选择了不再接收消息会清空订阅次数。
      2020-01-08
      回复
    • momo
      momo
      2020-01-08回复拾忆
      是呢,这样一来那基于记录的逻辑就会出问题,那有这种操作的用户就会不解:咦,我之前订阅的消息收不到呀,我明明又开启了接收“XXX通知”了呀。
      2020-01-08
      回复
    查看更多(4)
  • Mr.Zhao
    Mr.Zhao
    2020-01-08
    笔记写的不错
    2020-01-08
    赞同
    回复 3

正在加载...

登录 后发表内容