聊聊微信小程序的订阅消息


聊聊微信小程序的订阅消息

业务场景:在公司微信小程序的业务中,有预约等多个类似的功能,我们希望比如预约成功,预约失败都会第一时间给用户推一条消息,通知到用户。

方案1: 通过短信方式通知用户,优点:对前端来说,实现简单 。缺点:当然是很耗钱啦…

方案2: 利用微信小程序的订阅消息功能,如下图:

ok,先选择订阅消息试试。

我们先看文档,下面全是重点,不然会踩坑,我会一一解释,注:看下文档更新时间,或许会有所出入,很重要哦

wx.requestSubscribeMessage(Object object)
1
2
3
4
5
6
wx.requestSubscribeMessage({
tmplIds: ["XXXXXX", "XXXXXXXX", "XXXXXXXX"],
success() {
do some thing...
}
})

tmplIds: 为模版对应的id,一次调用最多可订阅3条消息

模版id需要在微信公众平台里进行配置,如下图:

调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过 wx.getSetting 接口可获取用户对相关模板消息的订阅状态。

模版设置好了之后,然后可以绑定在按钮上,当触发事件就会弹起如图消息:

后台设置的3条模版消息显示出来了,注意下面的总是保持以上选择,不再询问

如果你不勾选总是保持以上选择,不再询问,那么每次点击按钮触发的订阅事件,都会弹起这个消息框

如果你勾选了总是保持以上选择,不再询问,并且点击了取消,那么接下来按钮触发的订阅事件,消息框永远不会弹起来,你需要在小程序右上角3个点,进入设置,手动打开消息订阅。

如果你勾选了总是保持以上选择,不再询问,那么在右上角设置里会有如下图:

注意事项:

  • 一次性模板 id 和永久模板 id 不可同时使用。(永久模板id需要到社区去申请)
  • 低版本基础库2.4.4~2.8.3 已支持订阅消息接口调用,仅支持传入一个一次性 tmplId / 永久 tmplId。
  • 2.8.2 版本开始,用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面。(也就是说必须用户主动去触发点击事件,才可以调起订阅消息界面)
  • 2.10.0 版本开始,开发版和体验版小程序将禁止使用模板消息 formId。

接下来就是订阅消息的机制了:

微信小程序是这样的,你每一次订阅消息,然后从后端推送消息给你后,如果后端第二次再推消息过来,你是收不到的,为什么呢?因为你只能订阅一次消息,如果想永久订阅,需要去社区申请。你可以理解为积分制度,1分就可以接收一条订阅消息,2分就可以接收2条订阅消息,所以这很难受,但是有人想到一个方法,就是在用户经常需要点击的按钮上,去绑定订阅消息的事件,这样用户就会时不时的订阅消息+1,+1,+1,也就是能接收很多订阅消息了。

我在用户注册前,做了个上图的界面,提醒用户强制给我订阅的权限,并且勾选总是允许,然后在主页按钮上通通加上订阅事件,这样用户就在操作中,不知不觉增加订阅消息,我就能推送给用户消息了。但凡用户不给我订阅权限,我就直接拒绝让用户注册。

向用户推送消息需要服务端配合,然后官方文档上也有相应的错误码,需要后端开发者注意下。

我的微信公众号: 梨的前端小屋


文章作者: 梨啊梨
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梨啊梨 !
  目录