订阅消息是什么

用户用完小程序就退出了,想再提醒他回来,得靠订阅消息。它是微信给小程序的一条官方通道:用户订阅之后,后端可以给他推一条服务通知,出现在他的微信聊天列表里。

和以前的模板消息不同,订阅消息必须用户主动同意一次才能发一条,不能像短信那样想发就发。这个限制是为了防打扰,也是开发者必须遵守的规则。

本文核心知识点
  • 一次性订阅同意一次发一条。
  • 长期订阅特定类目可用。
  • 模板在公众平台申请。
  • 下发后端调接口发送。
小程序订阅消息示意:蓝调渐变背景上飞出的消息气泡与信号波纹的扁平科技插画
用户同意一次,后端才能发一条,提醒和召回都靠它。

一次性订阅与长期订阅

大多数小程序用的是一次性订阅:用户点一次允许,你就能给他发一条。发完就没了,想再发要再让用户同意一次。

类型能不能发适用
一次性订阅同意一次发一条大多数小程序
长期订阅同意后可多次发政务、医疗等特定类目

长期订阅不是谁都能开,得是符合要求的服务类目。普通电商和工具类,老老实实做一次性订阅。

一次性订阅虽然一次只发一条,但可以让用户一次同意多个模板。比如用户提交预约时,同时申请「预约成功提醒」和「就诊结果通知」两个模板,他一次授权你就攒下两条额度,后面两件事各发一条。合理攒额度,能少打扰用户好几次。

申请模板与下发

先在小程序公众平台的订阅消息里申请一个模板,选好要用的字段,拿到模板 ID。真正发的时候由后端调用发送接口,把用户的 openid、模板 ID 和字段内容传过去。

wx.requestSubscribeMessage({
  tmplIds: ["模板ID"],
  success: function (res) { console.log(res); }
});

前端负责弹起订阅授权,后端负责真正下发。下发接口需要 access_token,注意它有有效期,要缓存别每次重取。

模板里的字段内容也要按模板申请时的格式填:是数字就别塞一长串文字,是时间就传标准格式。填错了接口会直接拒绝。发布前先拿自己的小号测试一遍,确认通知能正常收到、点进去能跳到对应页面,再放量给真实用户。

引导用户订阅

用户不会无缘无故同意订阅,要在他确实需要提醒的时机引导。比如提交订单后、预约成功后,告诉他「开启提醒,结果出来第一时间通知你」。

  • 在用户真正需要通知的节点引导。
  • 说清楚订阅了会收到什么。
  • 别一进小程序就弹,那样多半被拒绝。

用户拒绝过一次,短期内再弹也没用,别反复骚扰。

引导订阅时,那个弹起授权的动作必须由用户的点击直接触发,不能页面一加载就自动弹。所以要把订阅授权绑在一个明确的按钮上,比如用户点「开启结果通知」时再调起。这样既符合平台规则,用户也知道自己正在同意什么,授权率自然就更高了。

召回与提醒用法

订阅消息用好了,是免费的召回通道:订单状态变了发一条、预约快到了发一条、活动开始前发一条。用户点通知就能回到小程序,比发短信便宜,也更自然。

通知要有用,别为了发而发,不然用户下次直接关。