微信小程序的服务通知(Service Notification)是一种用于向用户推送重要信息的功能。它不同于消息通知,服务通知不会在微信聊天列表中显示,而是在微信的“服务通知”入口展示。
我的小程序豆子工具,就使用了服务通知,非常好用,推荐给大家。豆子工具中用户提交IP归属地,后台审核后会下发豆子点数奖励。这是一个异步操作,非常适合服务通知。服务通知特别适合那种不是马上就能获得结果的场景,或者需要经过人工审核的场景。
以下是实现微信小程序服务通知的基本步骤:
1. 开通服务通知
你需要在微信公众平台(https://mp.weixin.qq.com/)上申请并开通小程序的服务通知功能。
2. 后端服务器配置
服务通知需要通过后端服务器调用微信接口来发送。首先需要在微信公众平台获取 access_token
,然后使用该 access_token
调用服务通知接口。
获取 access_token
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
发送服务通知
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
请求体示例:
{
"touser": "OPENID",
"template_id": "TEMPLATE_ID",
"page": "index",
"data": {
"first": {
"value": "您有新的订单,请查收。",
"color": "#173177"
},
"keyword1": {
"value": "订单号: 1234567890",
"color": "#173177"
},
"remark": {
"value": "感谢您的使用。",
"color": "#173177"
}
}
}
3. 模板消息管理
在微信公众平台的小程序后台,可以创建和管理模板消息。每个模板消息都有一个唯一的 template_id
,用于标识不同的通知内容和格式。
创建模板消息
登录微信公众平台 -> 小程序管理 -> 功能设置 -> 模板消息管理 -> 添加模板消息。
4. 前端代码
在小程序前端,需要处理用户订阅服务通知的流程。当用户同意订阅后,会返回一个 openid
,这个 openid
用于后端发送服务通知。
请求用户授权
wx.requestSubscribeMessage({
tmplIds: ['arnId'], // 需要下发的订阅消息模板id数组
success(res) {
if (res['arnId'] === 'accept') {
console.log('用户同意订阅');
// 将用户的 openid 发送给后端,以便后续发送服务通知
const openid = res['arnId'];
// 这里可以将 openid 保存到数据库或者直接发送给后端
} else {
console.log('用户拒绝订阅');
}
},
fail(err) {
console.error(err);
}
});
注意事项
- 权限控制:确保你的小程序已经获得相应的权限,并且用户已经同意接收相关的通知。
- 频率限制:微信对服务通知的发送频率有一定限制,避免频繁发送导致用户体验不佳。
- 数据保护:注意保护用户的隐私数据,不要滥用用户的信息。
通过以上步骤,你可以在微信小程序中实现服务通知功能,及时向用户推送重要的信息。
我在使用豆子工具实现服务通知过程中,发现服务通知,需要用户同意,才能有一次下发机会。每次下发新的通知,都需要用户重新点击同意按钮重新进行订阅。
更多的内容,请参考微信官方文档。
最后,发个推荐:
豆子工具是一个微信小程序,内含IP地址查询、音频格式转换、网络调试等工具。欢迎浏览收藏。