前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >小程序的推送与通知功能

小程序的推送与通知功能

原创
作者头像
LucianaiB
发布2025-01-29 13:14:04
发布2025-01-29 13:14:04
18700
代码可运行
举报
运行总次数:0
代码可运行

小程序的推送与通知功能

一、引言

微信小程序的推送与通知功能是提高用户留存和交互的重要手段。常见的推送与通知方式包括订阅消息、客服消息和微信模板消息(已被订阅消息替代)。 本文将详细介绍小程序推送通知的使用场景、实现方法,并提供示例代码,最后总结优化建议和参考资料。


二、小程序推送与通知的分类
  1. 订阅消息(wx.requestSubscribeMessage)
    • 适用于一次性授权,如订单状态、活动提醒等。
    • 用户需主动触发(如点击按钮),微信不会强制推送。
  2. 客服消息(wx.openCustomerServiceChat / wx.sendCustomerMessage)
    • 用于客服交互,支持文字、图片等格式。
    • 48 小时内可主动推送,之后只能用户主动联系。
  3. 系统通知(微信服务通知)
    • 公众号或企业微信发起,适用于用户关注的服务号。
    • 常用于交易通知、物流提醒等。

三、订阅消息的实现

订阅消息适用于一次性通知,如订单状态、会议提醒。 用户点击按钮后,开发者需后端调用 API 发送消息

3.1 在 app.json 中添加权限
代码语言:javascript
代码运行次数:0
复制
{
  "permissions": {
    "scope.subscribeMessage": {
      "desc": "订阅消息用于发送提醒"
    }
  }
}
3.2 前端请求用户授权
代码语言:javascript
代码运行次数:0
复制
wx.requestSubscribeMessage({
  tmplIds: ['TEMPLATE_ID'],  // 订阅消息模板 ID
  success(res) {
    if (res['TEMPLATE_ID'] === 'accept') {
      wx.showToast({ title: '订阅成功', icon: 'success' });
    }
  },
  fail(err) {
    console.error("订阅失败", err);
  }
});
3.3 后端调用 API 发送订阅消息
代码语言:javascript
代码运行次数:0
复制
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
{
  "touser": "USER_OPEN_ID",
  "template_id": "TEMPLATE_ID",
  "data": {
    "thing1": { "value": "订单已发货" },
    "time2": { "value": "2024-02-01 10:00" }
  }
}

四、客服消息的实现

客服消息适用于长时间沟通,支持文字、图片、音频等格式

4.1 前端跳转客服界面
代码语言:javascript
代码运行次数:0
复制
wx.openCustomerServiceChat({
  extInfo: { url: 'https://mp.weixin.qq.com/kf' },
  success() { console.log('打开客服成功'); }
});
4.2 后端发送客服消息
代码语言:javascript
代码运行次数:0
复制
POST https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN
{
  "touser": "USER_OPEN_ID",
  "msgtype": "text",
  "text": { "content": "您好,您的订单已发货!" }
}

五、系统通知(公众号消息)

如果需要跨小程序通知用户,可通过公众号模板消息实现。 示例:用户在小程序下单后,公众号推送支付成功通知。

5.1 获取公众号 openid
代码语言:javascript
代码运行次数:0
复制
wx.login({
  success(res) {
    wx.request({
      url: "https://yourserver.com/getOpenID",
      data: { code: res.code },
      success(res) { console.log("用户 OpenID", res.data.openid); }
    });
  }
});
5.2 后端推送公众号模板消息
代码语言:javascript
代码运行次数:0
复制
POST https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
{
  "touser": "USER_OPEN_ID",
  "template_id": "TEMPLATE_ID",
  "data": {
    "first": { "value": "您的订单已支付成功" },
    "keyword1": { "value": "¥99.00" },
    "keyword2": { "value": "2024-02-01 12:00" }
  }
}

六、最佳实践与优化
  1. 避免过度打扰
    • 订阅消息需要用户主动触发,避免强制弹窗。
    • 使用 wx.getSetting() 先检查授权状态。
  2. 结合数据库存储用户订阅信息
    • 记录用户的订阅时间、订阅类型,防止重复推送。
  3. 后端消息队列
    • RabbitMQ / Redis 处理批量推送,避免微信接口超限。

七、推荐参考文章
  1. 微信官方 API
  2. 实战案例

八、总结

本篇文章介绍了小程序的推送与通知功能,包括:

  1. 订阅消息(wx.requestSubscribeMessage)
  2. 客服消息(wx.openCustomerServiceChat)
  3. 公众号模板消息
  4. 推送优化与最佳实践

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小程序的推送与通知功能
    • 一、引言
    • 二、小程序推送与通知的分类
    • 三、订阅消息的实现
      • 3.1 在 app.json 中添加权限
      • 3.2 前端请求用户授权
      • 3.3 后端调用 API 发送订阅消息
    • 四、客服消息的实现
      • 4.1 前端跳转客服界面
      • 4.2 后端发送客服消息
    • 五、系统通知(公众号消息)
      • 5.1 获取公众号 openid
      • 5.2 后端推送公众号模板消息
    • 六、最佳实践与优化
    • 七、推荐参考文章
    • 八、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档