开发运营App绕不开一个话题,那就是内容或消息的推送,他可以是通知栏弹窗、短信、邮件、站内信、应用内浮层弹窗等多种形式,我带来一种方案,既能够整合这些推送渠道,又能自定义推送策略、自定义推送人群,实现精准推送。
要做一个统一的推送方案,需要先明确以下几个问题:
1、消息推送给谁
一款产品的用户可能有数万、数百万甚至数千万,而一条运营消息的目标用户可能只是其中的一部分用户,每一条运营消息的目标用户群体可能都是不同的,因此需要一个能够灵活划分用户群体的方案。
2、消息的形式和内容是什么
消息的形式包括但不限于通知栏弹窗、短信、邮件、站内信、应用内浮层弹窗,消息的内容根据实际的产品来决定。
3、消息的推送策略是怎样的
应该考虑推送开关、推送生效的时间范围、定时推送、重复推送等策略
用户分群方案
如果你的系统有统一的用户中心且具有比较完备的用户画像功能,那么可以跳过这部分。
我推荐用神策来解决用户分群问题,神策是一个第三方的数据采集与分析平台,用户的各种浏览点击行为都会被神策收集上报,再根据用户的行为,划分用户群体。比如你可以利用神策选出最近7天未活跃的用户群体、经常购买某一类商品的用户群体......
再神策完成用户分群后,业务系统可以接入神策Api,查询到用户分群下的用户。
消息的形式和内容
消息的形式和内容可以有很多种,但不管是哪一种,基本都可以抽象成消息标题、消息内容、消息跳转链接、消息图片这几个属性。推荐做一个统一的消息推送中心来整合多种消息推送渠道。
推送策略
推送计划应该有开关能够手动控制计划是否开启
推送计划应该有生效的时间范围,生效开始时间和结束时间
应该支持定时推送
应该支持消息的重复推送
一条推送计划下面应该支持配置多个内容,内容可以是逐个推送,也可以是批量推送
推送的用户应该支持全量或者增量,全量情况下,每次推送都把消息推给分群下的所有用户,增量情况下,每次只推送给最新加入分群的用户
推送策略必须依赖定时任务组件,如果是分布式系统,必须有分布式定时任务调度服务,能够支持通过Api接口创建定时任务,例如阿里云的schedulerX
推荐的系统架构方案如下:
表结构参考
运营计划表关键字段
字段名 | 描述 |
---|---|
plan_name | 计划名称 |
push_type | 推送类型,区分短信、邮件、站内信等 |
start_time | 开始时间 |
end_time | 结束时间 |
enable_status | 开关 |
user_scope | 区分增量推送还是全量推送 |
trigger_cycle | 定时任务触发周期,可以直接存cron表达式 |
repeat_frequency | 一次性推送任务还是重复推送任务 |
user_group_id | 目标用户群id |
job_id | 定时任务id,用来修改删除定时任务 |
推送内容表关键字段
字段名 | 描述 |
---|---|
plan_id | 计划id |
title | 标题 |
content | 内容,可能是富文本 |
link | 跳转链接,消息点击后的跳转链接 |
reach_time | 消息触达时间 |
推送记录表只需要模仿推送内容表,加一个user_id即可
高谈阔论