Weber博客

分享知识,记录思考

微信小程序订阅消息从0到1实战

2025年7月7日
小程序

在微信小程序中,我们经常可以在【微信-服务通知】里面能看到下面这样一条信息,这其实就是微信的订阅服务通知。小程序可以通过后台发送这个服务通知,告诉用户一些信息,这样能很好地实现小程序应用的一个闭环。

微信截图_20250705180848.png

订阅消息模板

如果我们要后台发送这种订阅消息的话,就需要在小程序后台开通订阅消息模板,以这个模板形式给用户发送数据,至于这个模板怎么弄,我们可以通登录小程序后台,点击【基础功能 - 订阅消息 - 公共模板库】这个时候我就可以根据自己项目选择对应消息模板库 。微信截图_20250705181902.png

当点击【选用】后,就可以到模板里面勾选我的需要字段了,这里勾选的字段就是出现的通知服务里面出现的字段。

微信截图_20250707113402.png

当模板设置完成后,回到【我的模板】就能看到一条刚创建订阅模板记录,选择详情就能看到里面字段绑定的数据,这个数据就是需要我们后台发送的信息的字段了。

微信截图_20250707113455.png

此时,我们小程序的订阅的模板已经创建成功了!

发送订阅模板信息

当小程序后台订阅模板创建好了以后,就可以通过后台以小程序指定接口来给用户发送订单消息了。

发送订阅消息接口

接口地址:https://api.weixin.qq.com/cgi-bin/message/subscribe/send

请求类型:POST

Params:

参数 类型 说明
access_token string 接口调用凭证,该参数为 URL 参数,非 Body 参数。

 

Body:

参数 类型 说明
template_id string 所需下发的订阅模板id
page string 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转
touser string 接收者(用户)的 openid
data string 模板内容,格式形如{ "phrase3": { "value": "审核通过" }, "name1": { "value": "订阅" }, "date2": { "value": "2019-12-25 09:42" } }
miniprogram_state string 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
lang string 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
 
由此我们可能通过以上格式,得到发送一个服务通知需要知道的数据有:
  • access_token
  • touser
  • template_id
  • data
服务器发送一个POST请求后,微信就可能接收到对应的消息通知,接下来我们将对上面参数一个个详细讲讲,如何获取对应的值。

access_token

什么是access_token,它是微信小程序与服务器之间进行安全通信的关键凭证

也是通过微信提供的接口来获取对应用户的access_token

接口地址:https://api.weixin.qq.com/cgi-bin/token

请求类型:GET

Params:

参数名 类型 说明
grant_type string 填写 client_credential
appid string 小程序唯一凭证,即 AppID
secret string 小程序唯一凭证密钥,即 AppSecret,获取方式同 appid

通过调用上面接口,我们就可能获取到access_token的值。

touser

touser其实就是用户的openId,我们通过微信官方文档了解,获取openId也是通过一个GET请求去获取:

接口地址:https://api.weixin.qq.com/sns/jscode2session

请求类型:GET

Params参数:

参数名 类型 说明
appid string 创建小程序的appId
secret string 小程序的secret
js_code string 临时登录凭证,通过wx.login()获取
grant_type string 固定值 authorization_code

通过上面请求,我们就可以获致用户的openId值,即touser的值。

 template_id与data

至于模板ID与发送的数据字段时,我们已经可以从上面的我们申请模板中详情可以查看到各自的信息。

微信截图_20250707113455.png

此时,我们已经跑通了后台订阅服务的发送机制,只需要要合适的时机发送一个订阅服务通知请求,这样用户的微信服务通知里面,就会有这个样一条信息。

微信截图_20250707152637.png

一次性订阅/长期订阅

在微信小程序中,消息模板订阅分为两种类型:一次性订阅长期订阅,它们在权限、使用场景和有效期上有显著区别。

一次性订阅

特点

  • 权限要求低:用户只需授权一次

  • 单次有效:用户每接收一次模板消息都需要重新授权

  • 适用场景

    • 临时性通知(如订单状态变更、物流通知)

    • 非定期触发的服务提醒

    • 需要用户每次确认的重要通知

  • 有效期:用户授权后仅对当次发送有效

  • 开发建议:适合大多数通用场景,符合微信"轻量提醒"的设计理念

长期订阅

特点

  • 权限要求高:需要微信审核通过才能使用

  • 长期有效:用户授权后,开发者可多次发送消息无需重复授权

  • 适用场景

    • 政府或民生服务类小程序(如社保变动、公积金提醒)

    • 医疗健康类服务(如体检报告、用药提醒)

    • 教育类服务(如课程提醒、考试通知)

  • 有效期:用户授权后长期有效,直到用户主动取消

  • 特殊要求

    • 仅限特定行业类别的小程序申请

    • 需提交证明材料并通过微信审核

    • 有严格的发送频率限制

总结

以上就是通过给 水动时刻小程序 增加了订阅信息服务,现在在小程序设置中开启提醒时长后,当用户指定时间内没有打卡饮水,就会收到一条饮水服务通知。

微信截图_20250707153522.png

欢迎扫码体验

水动时刻.png

文章评论

发表评论

全部评论 (0)

加载评论中...