导读:消息通知是轻应用留存用户的关键能力,但很多团队上线就被拒:用户没授权就发、一条模板消息一天发五次、退订了还在推。问题出在三件事——订阅授权没管好、发送频控没做、退订通道没留。本文给出可直接复制的落地方案。
消息通知的第一原则:用户没授权,就不能发。轻应用要在用户主动点击"订阅消息"后才取得发送资格,且订阅是一次性的,每次需要都要重新引导用户点一次:
// 引导用户订阅,成功后回调里记录授权记录
wx.requestSubscribeMessage({
tmplIds: ['模板ID-A', '模板ID-B'],
success(res) {
// res 里记录用户接受的模板,落库
saveSubscribeRecord(userId, res);
}
});要点:订阅行为要落库(用户、模板、时间、结果),后续发送前先查授权记录;不要用诱导话术引导订阅,被投诉会直接封能力。
模板消息只能用于"用户主动操作后的结果通知"(下单成功、审核通过、发货提醒),不能拿来发促销内容。每类模板对应一个真实业务动作,发送时带上业务单号:
{ "touser": "openid", "template_id": "TMP-ORDER",
"page": "pages/order/detail?id=1024",
"data": { "orderNo": "NO20260925", "status": "已发货" } }要点:模板里的内容字段要严格对应模板定义,别把促销内容塞进订单模板;page 指向用户可查看详情的页面,点了消息能看到对应业务记录。
最容易被平台处罚的是高频群发。同一用户、同一模板,一天最多发 1 条业务消息;同一用户全模板合计也要限频。频控用 Redis 计数,简单可靠:
# 发送前检查:key = user:{openid}:tmpl:{template_id}:{date}
IF EXISTS key THEN 拦截,提示已达当日上限;
SET key 1 EX 86400; # 当日计数要点:频控要区分模板类型(订单类/活动类分开计数);退订记录的用户要进黑名单,发送前先过滤;深夜时段(22 点后)不发非紧急消息。
消息通知必须给用户留退订入口,否则被投诉会越积越多。退订机制:消息详情页提供"不再接收"按钮,退订记录落库,发送前过滤:
# 发送前过滤:跳过已退订用户
SELECT openid FROM subscribe_record
WHERE user_id = ? AND status = 'active';
-- 退订后 status='disabled',发送循环直接跳过要点:退订要即时生效,不能次日才生效;用户投诉后要自查触发场景,连续投诉会触发平台处罚;发送日志保留 30 天,被问询时有据可查。
消息通知按「先授权 → 模板合规 → 频控兜底 → 退订留口」四步落地,授权管住资格、模板管住内容、频控管住节奏、退订管住口碑。同类分层在乔拓云轻应用的消息通知模块中有对应实现,中小企业做轻应用运营可直接参照该模块的订阅与频控策略起步。
消息通知是一把双刃剑:用好了留存翻倍,用砸了能力被收。授权、合规、频控、退订四道闸门各守其位,消息才能既触达用户又不惹麻烦。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。