评论

实战分享: 小程序云开发玩转订阅消息(一)

微信最新推出的小程序订阅消息给小程序开发者带来了更好的触达用户的能力,我们今天会我们会利用小程序·云开发进行一个小程序中实现订阅开课提醒的实战,帮助大家了解如何基于小程序·云开发快速接入小程序订阅消息

微信官方为提升小程序模板消息能力的使用体验,对模板消息的下发条件进行了调整。原有的小程序模板消息接口于 2020 年 1 月 10 日下线,届时将无法使用旧的小程序模板消息接口发送模板消息,取而代之的是新的一次性订阅消息和长期订阅消息。

订阅消息给小程序开发者带来了更好的触达用户的能力,在具体实施过程中,开发者如何把模板消息换成新的订阅消息,是否需要购买服务器来实现服务器鉴权,怎样才能在用户订阅之后一段时间后,给用户发送长期或一次性订阅消息呢?

小程序·云开发最近支持了通过云调用免 access_token 发送订阅消息,还新增支持了在定时触发器中实现云调用,这些能力可以帮助开发者轻松玩转小程序订阅消息。

我们今天会利用小程序·云开发进行一个小程序中实现订阅开课提醒的实战,帮助大家了解如何基于小程序·云开发快速接入小程序订阅消息。

整体时序图

开课提醒订阅消息时序图

环境准备

  • 注册小程序帐号[1]
  • 开通云开发服务[2]

获取订阅消息模板 ID

在微信小程序管理后台中,新增一个订阅消息的模板,这里我们新增了一个开课提醒的模板。

新增模板

引导用户订阅

微信小程序提供了wx.requestSubscribeMessage 接口来发起申请订阅权限界面。

微信申请订阅权限界面

在 "订阅开课提醒" 的按钮上绑定 tap 事件,事件处理器我们这里用的 onSubscribe

index.wxml

<button
 class="btn"
 data-item="{{ item }}"
 bindtap="onSubscribe"
 hover-class="btn-hover"
>
 订阅开课提醒
</button>

在 onSubscribe 函数内,我们会调用微信 API wx.requestSubscribeMessage 申请发送订阅消息权限,当用户在弹窗同意订阅之后,我们会收到 success 回调,将订阅的课程信息调用云函数 subscribe 存入云开发数据库,云函数 subscribe 的实现在下文会讲。

index.js

onSubscribe: function(e) {
   // 获取课程信息
   const item = e.currentTarget.dataset.item;

   // 调用微信 API 申请发送订阅消息
   wx.requestSubscribeMessage({
     // 传入订阅消息的模板id,模板 id 可在小程序管理后台申请
     tmplIds: [lessonTmplId],
     success(res) {
       // 申请订阅成功
       if (res.errMsg === 'requestSubscribeMessage:ok') {
         // 这里将订阅的课程信息调用云函数存入云开发数据
         wx.cloud
           .callFunction({
             name: 'subscribe',
             data: {
               data: item,
               templateId: lessonTmplId,
             },
           })
           .then(() => {
             wx.showToast({
               title: '订阅成功',
               icon: 'success',
               duration: 2000,
             });
           })
           .catch(() => {
             wx.showToast({
               title: '订阅失败',
               icon: 'success',
               duration: 2000,
             });
           });
       }
     },
   });

 },

文章字数超出 50000 字,后半部分链接 《实战分享: 小程序云开发玩转订阅消息(二)》

最后一次编辑于  10-23  
点赞 7
收藏
评论

3 个评论

  • 吴少群
    吴少群
    11-22

    微信申请订阅权限  一次最多可申请用户订阅几条?如果超过数量的话会怎样?

    目前我们这边经过测试得出,最高可订阅3条,超过3条申请订阅的对话框都不会显示出来。

    能确认下是这么一个规则吗?

    11-22
    赞同
    回复
  • "
    10-28

    云函数 定时群发的效率高吗?

    10-28
    赞同
    回复 3
    • Booker Zhao(赵兵)
      Booker Zhao(赵兵)
      10-28
      目前这种方式最简单,可以满足大部分的需求,如果觉得哪里改进,可以一起沟通交流
      10-28
      回复
    • "
      10-28回复Booker Zhao(赵兵)
      云函数可能方便点,不过大量群发订阅消息的话,不知道会不会比服务器的效率高,例如:一次群发1万条,用云函数大概用时多久?
      10-28
      回复
    • Booker Zhao(赵兵)
      Booker Zhao(赵兵)
      10-28回复
      这个可以测试下,再给出结论
      10-28
      回复
  • 假装在上海
    假装在上海
    10-23

    data-item="{{ item }}"

    这个item里面是啥 数据 啊

    10-23
    赞同
    回复 1