跳到主要内容

订阅消息推送

介绍

订阅消息推送是小程序中一项重要的高级功能,允许开发者向用户发送重要的通知或提醒。与普通消息不同,订阅消息需要用户主动授权,并且每条消息都有一定的时效性。这种机制既保证了用户的体验,又为开发者提供了与用户互动的有效方式。

在本教程中,我们将逐步讲解如何在小程序中实现订阅消息推送功能,并通过实际案例帮助你更好地理解其应用场景。

订阅消息的核心概念

在开始实现订阅消息推送之前,我们需要了解一些核心概念:

  1. 模板消息:订阅消息是基于模板的,开发者需要在小程序后台配置消息模板。每个模板都有一个唯一的模板 ID,用于标识消息内容的结构。
  2. 用户授权:用户需要主动授权才能接收订阅消息。开发者需要通过 API 请求用户的授权。
  3. 消息时效性:每条订阅消息都有一个有效期,通常为 7 天。超过有效期后,消息将无法发送。

实现步骤

1. 配置消息模板

首先,你需要在小程序后台配置消息模板。进入小程序管理后台,选择「功能」->「订阅消息」,然后点击「添加模板」。选择合适的模板并记录下模板 ID。

2. 请求用户授权

在小程序中,你需要调用 wx.requestSubscribeMessage API 来请求用户的授权。以下是一个示例代码:

javascript
wx.requestSubscribeMessage({
tmplIds: ['模板ID'], // 替换为你的模板 ID
success(res) {
if (res['模板ID'] === 'accept') {
console.log('用户已授权');
} else {
console.log('用户拒绝授权');
}
},
fail(err) {
console.error('请求授权失败', err);
}
});

3. 发送订阅消息

在用户授权后,你可以通过服务器端 API 发送订阅消息。以下是一个 Node.js 示例:

javascript
const axios = require('axios');

const sendSubscribeMessage = async (openId, templateId, data) => {
const accessToken = await getAccessToken(); // 获取 access_token
const url = `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${accessToken}`;

const result = await axios.post(url, {
touser: openId,
template_id: templateId,
data: data,
});

console.log('消息发送结果', result.data);
};

4. 处理消息回调

当用户点击订阅消息时,小程序会触发一个回调事件。你可以在 app.js 中监听该事件:

javascript
App({
onLaunch() {
wx.onAppShow((res) => {
if (res.referrerInfo && res.referrerInfo.appId === '小程序AppID') {
console.log('用户点击了订阅消息');
}
});
}
});

实际案例

假设你正在开发一个电商小程序,用户下单后需要收到订单状态更新的通知。你可以按照以下步骤实现:

  1. 配置一个订单状态更新的消息模板。
  2. 在用户下单时请求订阅消息授权。
  3. 在订单状态发生变化时,通过服务器端 API 发送订阅消息。

例如,当订单发货时,你可以发送如下消息:

json
{
"touser": "用户OpenID",
"template_id": "订单状态模板ID",
"data": {
"thing1": { "value": "您的订单已发货" },
"thing2": { "value": "预计 3 天内送达" }
}
}

总结

订阅消息推送是小程序中一项强大的功能,能够帮助开发者与用户保持有效的沟通。通过本教程,你已经掌握了订阅消息的核心概念、实现步骤以及实际应用场景。

提示

在实际开发中,建议合理使用订阅消息,避免频繁打扰用户。确保每条消息都对用户有实际价值。

附加资源

练习

  1. 尝试在小程序中实现一个简单的订阅消息推送功能,发送一条测试消息。
  2. 思考如何优化订阅消息的用户体验,例如在合适的时机请求授权。