【小程序】使用模板消息发送消息给多个用户

本文介绍了如何在微信小程序中突破模板消息的推送限制,通过收集和存储多个表单ID,实现7天内任意推送。详细阐述了收集推送码、上传到服务器、服务端存储及发送模板消息的步骤,并提供了相关接口的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用模板消息发送消息给多个用户

一、需求背景

  基于微信的通知渠道,微信小程序为开发者提供了可以高效触达用户的模板消息能力,在用户本人与小程序页面有交互行为后触发,通过微信聊天列表中的服务通知可快捷进入查看消息,点击查看详情还能跳转到下发消息的小程序的指定页面。

  微信小程序允许下发模板消息的条件分为两类:支付或者提交表单。通过提交表单来下发模板消息的限制为“允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下条数独立,相互不影响)”。

 

  然而,用户1次触发7天内推送1条通知是明显不够用的。比如,签到功能利用模板消息的推送来提醒用户每天签到,只能在用户前一天签到的情况下,获取一次推送模板消息的机会,然后用于第二天向该用户发送签到提醒。但是很多情况下,用户在某一天忘记签到,系统便失去了提醒用户的权限,导致和用户断开了联系;再比如,系统想主动告知用户即将做某活动,然而由于微信小程序被动触发通知的限制,系统将无法主动推送消息。

 

二、如何突破模板消息的推送限制?

  为了突破模板消息的推送限制,实现7天内任性推送,只需收集到足够的推送码,即每次提交表单时获取到的formId。一个formId代表着开发者有向当前用户推送模板消息的一次权限。

 

  

 三、实现

  1.收集推送码。获取多个表单id并保存,便于一次性发送给服务器

  // 收集推送码
  Page({
    formSubmit: funcition(e) {//form表单按钮点击调用该方法
      let formId = e.detail.formId; //获取表单formId
      this.collectFormIds(formId); //保存推送码
      let type = e.detail.target.dataset.type; // 根据type执行点击事件
    },

    collectFormIds: function(formId) { //保存推送码
      let formIds = app.globalData.globalFormIds; // 获取全局推送码数组
      if (!formIds)
        formIds = [];
      let data = {
        formId: formId,
        expire: new Data().getTime() + 60480000 // 7天后的过期时间戳
      }
      formIds.push(data);
      app.globalData.globalFormIds = formIds;
      },
    })

  2.上传推送码。即将推送码发送给服务器然后保存起来(需要上传的数据:formId和openId)

    // 上报推送码
    Page({
      onLoad: funcition(e) {
      this.uploadFormIds(); //上传推送码
    },

    collectFormIds: function(formId) {
      var formIds = app.globalData.globalFormIds; // 获取全局推送码
      if (formIds.length) {
        formIds = JSON.stringify

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值