微信小程序有几种推送消息的方式

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. 总结

微信小程序的消息推送方式主要有模板消息、客服消息、订阅消息和群发消息,每种方式都有其特点和适用场景,在实际开发中需要根据业务需求选择合适的推送方式。使用消息推送功能时,要注意遵循微信的规定,防止触犯法律法规。