1. 概述
微信小程序作为一种轻量级的应用程序,越来越受到开发者的青睐。在小程序中,消息推送功能是非常重要的一个功能,它可以让用户在不打开小程序的情况下接收到重要信息。微信小程序的消息推送方式主要有以下几种:
模板消息推送
客服消息推送
订阅消息推送
群发消息推送
2. 模板消息推送
模板消息是一种向用户发送固定格式消息的推送方式,适用于需要频繁发送小量信息的场景。开发者需要先在小程序管理后台设置好消息模板,然后调用API接口向用户推送消息。
2.1 设置消息模板
在小程序管理后台,开发者可以通过"设置" -> "模板消息" -> "添加模板"来设置模板。每个模板需要包括以下信息:
模板 ID:每个模板都有唯一的模板 ID,开发者需要记住该 ID,后续发送模板消息时会用到。
模板标题:用于展示在用户手机上的通知栏中。
模板内容:模板中需要填充的信息。
模板示例:用于展示模板消息的格式和内容。
// 示例代码
wx.requestSubscribeMessage({
tmplIds: ['模板 ID'],
success(res) {
console.log(res);
}
});
注意:从2021年1月1日起,微信要求用户必须先点击订阅按钮才能接收到订阅消息,否则将无法接收到消息。
2.2 发送模板消息
设置好消息模板后,开发者可以通过调用小程序的API接口来向用户发送模板消息。在wx.requestSubscribeMessage接口中,只需将模板 ID 放到tmplIds数组中即可,示例代码如下:
// 示例代码
wx.requestSubscribeMessage({
tmplIds: ['模板 ID'],
success(res) {
console.log(res);
}
});
在用户点击订阅后,开发者可以将填充好的模板消息发送给用户。示例代码如下:
// 示例代码
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN',
method: 'POST',
data: {
touser: 'OPENID',
template_id: '模板 ID',
page: 'index',
form_id: 'FORMID',
data: {
keyword1: {
value: '降价优惠提醒'
},
keyword2: {
value: '50%'
}
}
},
success(res) {
console.log(res);
}
});
注意:form_id是一次性的,如果要使用多次,需要在用户提交表单后立即将其保存。
3. 客服消息推送
客服消息是一种与用户进行实时交互的消息推送方式。相比模板消息,客服消息更加灵活,支持多种消息格式,并且可以实现多次交互,非常适合需要实时回复的场景。
3.1 接入客服功能
在小程序中使用客服消息推送功能前,需要先在小程序后台接入客服功能。具体操作可参考微信开放平台的相关文档。
3.2 发送客服消息
在接入完成后,开发者可以通过调用API接口来实现客服消息的发送。需要注意的是,需要先获取用户的openid才能发送客服消息。示例代码如下:
// 示例代码
wx.getUserInfo({
success(res) {
var openid = res.userInfo.openId;
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN',
method: 'POST',
data: {
touser: openid,
msgtype: 'text',
text: {
content: '欢迎来到小程序!'
}
},
success(res) {
console.log(res);
}
});
}
});
4. 订阅消息推送
订阅消息是一种向用户推送个性化消息的方式,用户可以自主选择是否接收。订阅消息可以通过小程序的"订阅消息"组件进行订阅,用户再通过小程序后台进行管理。订阅消息适用于需要向用户发送一些个性化信息的场景,例如商品降价通知、订单状态变更等。
4.1 获取用户授权
在使用订阅消息之前,需要先获取用户的授权。开发者可以调用API接口wx.requestSubscribeMessage来弹出授权框,并获取用户的授权状态。
// 示例代码
wx.requestSubscribeMessage({
tmplIds: ['模板 ID'],
success(res) {
console.log(res);
}
});
注意:从2021年1月1日起,微信要求用户必须先点击订阅按钮才能接收到订阅消息,否则将无法接收到消息。
4.2 发送订阅消息
获取用户授权后,开发者可以调用API接口wx.requestSubscribeMessage来向用户发送订阅消息。模板消息中填充的变量需在小程序后台进行设置。示例代码如下:
// 示例代码
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN',
method: 'POST',
data: {
touser: 'OPENID',
template_id: '模板 ID',
page: 'index',
data: {
keyword1: {
value: '降价提醒'
},
keyword2: {
value: '50%'
}
}
},
success(res) {
console.log(res);
}
});
5. 群发消息推送
群发消息是一种向多个用户发送消息的方式,适用于需要向用户发送一些广告、优惠等信息的场景。开发者可以在小程序后台选择要发送消息的用户群体,并编写好消息内容后发送消息。
5.1 创建用户标签
在发送群发消息之前,需要先创建用户标签。标签可以根据用户的属性和行为来进行分类,以便针对不同的标签进行不同的推送。
5.2 发送群发消息
在创建好标签后,开发者可以在小程序后台选择要发送消息的用户群体,并编写好消息内容后发送消息。发送消息的方式主要有两种:
通过小程序后台发送
通过API接口发送
在小程序后台发送消息的方式比较简单,只需要在小程序后台选择要发送的用户群体并编写好消息内容即可。而通过API接口发送消息要先调用wx.request获取access_token,然后再调用API接口发送消息。示例代码如下:
// 示例代码
wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN',
method: 'POST',
data: {
filter: {
is_to_all: false,
tag_id: '标签 ID'
},
text: {
content: '这是一条群发消息'
},
msgtype: 'text'
},
success(res) {
console.log(res);
}
});
6. 总结
微信小程序的消息推送方式主要有模板消息、客服消息、订阅消息和群发消息,每种方式都有其特点和适用场景,在实际开发中需要根据业务需求选择合适的推送方式。使用消息推送功能时,要注意遵循微信的规定,防止触犯法律法规。