评论

针对新手很容易出现理解误区的微信小程序订阅消息模块

使用订阅消息也有一段时间了,感觉对新手订阅消息很容易让新开发者进入一个理解的误区,这里觉得有必要说出来

1. 写在前面

微信小程序下架了模板消息功能,取而代之的是订阅消息功能。这个订阅消息目前又分为「一次性订阅」和「永久订阅」。使用订阅消息也有一段时间了,感觉对新手订阅消息很容易让新开发者进入一个理解的误区,这里觉得有必要说出来

2. 理解误区

很多新手认为,只要用户勾选了小程序端订阅消息弹出时底部的「总是保持以上选择…」后,就可以「为所欲为」的不限次数的推送订阅消息给用户了。如下图:

3. 正确理解

如果你使用的「一次性订阅」模板(目前发现绝大多数开发者都是只能用一次性的,因为永久性的订阅消息申请门槛太高),那么勾选底部的「总是…」这个并不代表以后可以直接推送了。官方原话wx.requestSubscribeMessage的介绍里是这样写的:

3.1 官方说明

  1. wx.requestSubscribeMessage(Object object)
  2. 基础库 2.8.2 开始支持,低版本需做兼容处理。
  3. 调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。
  4. 注意事项
  5. 一次性模板 id 和永久模板 id 不可同时使用。
  6. 低版本基础库2.4.4~2.8.3 已支持订阅消息接口调用,仅支持传入一个一次性 tmplId / 永久 tmplId。
  7. 2.8.2 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。
  8. 2.10.0 版本开始,开发版和体验版小程序将禁止使用模板消息 fomrId。

3.2 重点关注

这里重点关注第7条:「用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。」这就意味着你需要在用户主动点击某个组件是触发调用wx.requestSubscribeMessage方法再次订阅,订阅后,你才可以「为所欲为」推送一次模板消息,注意只能一次。下次再想推送时,需要用户再次点击触发wx.requestSubscribeMessage。

4. 破局方案

目前订阅消息功能,就是这么个情况,所以针对这个情况的替代方案有以下

4.1 永久性订阅消息

如果能达到申请「永久性订阅」消息的模板的门槛,那自然是极好的,直接用永久性模板「为所欲为」。

4.2 使用服务号的模板消息替代

比较常用的是使用公众号服务号的模板消息代替小程序的订阅消息功能,公众号的模板消息功能限制就比订阅号好多了,基本上可以「为所欲为」的推送。但是这个方案有个致命的运营成本:必须要用户关注公众号,还有小程序要跟公众号同一主体并绑定在开放平台下。同时开发成本有所增加,要采用unionId机制来打通小程序跟公众号的openId。这个具体的实现方案,大家有兴趣的话可以讨论下。笔者目前就是用这种方案的。

5. 几个注意点

5.1 官方提示

订阅消息如果选择选择‘总是保持以上选择,"不再询问"后的设置问题:
目前是选择‘总是保持以上选择,"不再询问"后,可以在设置中开启或拒绝接收,但不会再次拉起授权弹窗

6. 长期性订阅消息

请参考官方最新文档:
小程序模板消息能力调整通知 | 微信开放社区
https://developers.weixin.qq.com/community/develop/doc/00008a8a7d8310b6bf4975b635a401
长期性订阅消息
一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。

目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。

7.题外话

鉴于被戴上各种「刷赞,冲级,让社区点赞“通货膨胀”」等等一些恶毒字眼(最近多了个职业回复的「雅称」),各种帽子戴得,做一个开发爱好者积极分享和解决各种问题太难了,姑且不论咱写一篇文章需要截图多少,单单排版就得废掉俺多少时间哈,很受伤,所以本人决定在微信开放者社区封笔。你看到是俺最后一篇发表在微信开放社区的文章。如果你想继续查看俺的一些文章可以私聊我。我会在其他平台保持继续创作。bye-bye~

8. 最最重要的来了

看完后觉得有用记得点赞~~
↓点赞处↓

最后一次编辑于  2020-09-04  
点赞 75
收藏
评论

31 个评论

  • 🤪
    🤪
    2020-02-19

    永久性的申请入口在哪

    2020-02-19
    赞同 2
    回复 5
  • Admin²⁰²¹
    Admin²⁰²¹
    2020-02-12

    针对新手很容易出现理解误区的微信小程序订阅消息模块 - WXOPEN Club | 微信小程序专业社区

    https://wxopen.club/topic/5e2eadb68c60562a45cf805e


    发现文章被盗转到这个平台了怎么破

    2020-02-12
    赞同 2
    回复 1
    • 拎包哥
      拎包哥
      2020-03-03
      连小肥羊和那只口吐芬芳,小嘴抹了蜜的东西的评论都复制过去了。我吐了,和脚本之家一路货色,各种抄袭CSDN和小程序社区
      2020-03-03
      2
      回复
  • 花前。
    花前。
    01-08

    支付分渠道该怎么接入一次性推送呢?因为api限制很严,希望的是在支付分确认成功后才让用户选择是否推送,目前看情况好像无法实现;但是这个场景其实跟支付回调没有区别

    01-08
    赞同 1
    回复
  • 旅行
    旅行
    2020-08-19

    你好,想请问一下,订阅一次,发送一次,订阅一次,可以发送多条吗?现在我们是这种情况,提问者发布了一个问题,他订阅一次回答消息,能收到多条用户的回答消息。

    2020-08-19
    赞同 1
    回复 2
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-08-19
      那应该是之前他有订阅过多次或者使用的是长期模板吧,正常订阅一次只能收到一次订阅消息。
      2020-08-19
      2
      回复
    • |G.XIAO|
      |G.XIAO|
      2020-11-27回复Admin²⁰²¹
      正常订阅一次,且勾选了总是保持以上选择,不在询问,也只能发一次吗
      2020-11-27
      回复
  • 超乖咬人兔🐰
    超乖咬人兔🐰
    2020-03-31

    写得太有参考价值了,想请问一下大神

    公众号的模板消息和小程序的订阅消息可以共存的吗?还是只能二选一?

    我们既有认证的公众号也有小程序,怎么抉择用哪个呢?


    小程序可以拿到这个用户是否关注公众号吗?

    2020-03-31
    赞同 1
    回复 3
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-03-31
      1、可以共存
      2、根据需求选择。如果小程序的「订阅一次,发送一次」可以满足需求,推荐订阅消息
      3、如果你小程序跟公众号有打通UnionId机制的情况下,后端通过公众号的关注/取消关注事件写入自己的数据库保存相关状态可以实现
      2020-03-31
      回复
    • 超乖咬人兔🐰
      超乖咬人兔🐰
      2020-04-01回复Admin²⁰²¹
      谢谢大神~ 那两种消息共存的话,用户岂不是会出现同一个消息,既在服务通知出现,又在公众号出现?
      如果出现的话,用户怎么样能够选其中一个来通知呢?
      2020-04-01
      1
      回复
    • จุ๊บXavier
      จุ๊บXavier
      2020-04-02
      可以共存但是你可以选择只在一边推送啊,根据需求选择一种方案就好了
      2020-04-02
      1
      回复
  • K
    K
    2020-03-25

    每次需要推送消息 都要点击 授权?比如 :我给人家留言 我连续留五条 是不是要授权五次wx.requestSubscribeMessage

    2020-03-25
    赞同 1
    回复 6
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-03-25
      对的。要在相应地方调用requestSubscribeMessage,如果勾选总是...的话就不会弹出授权窗口而是静默执行并表示用户接受
      2020-03-25
      3
      回复
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-03-25
      requestSubscribeMessage执行一次,订阅一次,订阅一次,服务端可以发送一次
      2020-03-25
      3
      回复
    • 池鱼🐠
      池鱼🐠
      2020-09-10回复Admin²⁰²¹
      我测试了调用这个接口确实可以累加,想请教一下这个累加的上限是多少啊?非常感谢
      2020-09-10
      回复
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-09-10
      wx.requestSubscribeMessage的tmplIds参数,一次最多可以累加3个tmplId
      2020-09-10
      回复
    • ALKAO.UA
      ALKAO.UA
      2020-12-04回复Admin²⁰²¹
      那可以累加授权几次呢?这样的话服务端可以发送多次了呢?
      2020-12-04
      回复
    查看更多(1)
  • 孙雪松
    孙雪松
    2020-03-01

    公众号的模板消息可以进入小程序吗

    2020-03-01
    赞同 1
    回复 1
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-03-01
      可以,绑定后可以,模板消息有个小程序appid参数
      2020-03-01
      2
      回复
  • 陆江锋
    陆江锋
    2020-01-18

    靠,写的一堆废话,我居然看完了,没得到解决办法!!!最后替代办法还写上用模板消息替代,模板消息已经在1月6日下架了,不知道吗?误人子弟,误人子弟,浪费我时间!!!!

    2020-01-18
    赞同 1
    回复 6
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-01-18
      请认真看,说的是公众号的模板消息,不是小程序的模板消息功能。抱歉,浪费你时间了。
      2020-01-18
      2
      回复
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-01-18
      再次表示抱歉:浪费您时间了。
      2020-01-18
      2
      回复
    • 千里马:马不停蹄
      千里马:马不停蹄
      2020-02-17
      jiandanminglia0
      2020-02-17
      回复
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-02-21回复千里马:马不停蹄
      简单明了?
      2020-02-21
      回复
    • 小康
      小康
      2020-12-03
      别人说的是公众号的模板消息,你说的模板消息已经在1月6日下架了这个是指小程序的模板消息。你好像没弄清楚啊兄弟
      2020-12-03
      回复
    查看更多(1)
  • 马尚尚
    马尚尚
    2020-01-16

    最近很活跃,高产呀,非常感谢分享,收藏了。

    2020-01-16
    赞同 1
    回复 2
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-01-16
      多谢。
      2020-01-16
      2
      回复
    • p-song
      p-song
      2020-05-30
      是这个吗
      2020-05-30
      回复
  • can
    can
    02-26

    用户授权一次之后多长时间内有效,看了下文档也没说具体时间.

    02-26
    赞同
    回复

正在加载...

登录 后发表内容