偏好管理 - 用户自定义通知偏好

产品需求

入职第六周,产品经理小李找到我:

“用户投诉说半夜被推送吵醒,能不能加个免打扰时段设置?”

“还有,有些用户只想收私信通知,不想收点赞通知,能不能让他们自己选择?”

我打开竞品 App,发现它们都有通知设置页面:

  • 全局开关:是否接收推送
  • 分类开关:点赞、评论、关注、私信、系统通知
  • 免打扰时段:比如 23:00-07:00 不推送
  • 推送频率:高、中、低

这些设置,我们都要支持。

数据模型设计

我设计了一个偏好设置表:

数据设计要点

  • 核心是在 notification_preferences 里保存业务事实,而不是把规则散落在应用逻辑里。
  • 索引服务于高频查询,重点是缩小扫描范围,而不是堆更多字段。

默认偏好策略

不同用户群体的默认偏好不同:

偏好检查逻辑

在发送通知时,检查用户偏好:

界面设计

简洁的设置界面:

┌─────────────────────────────────────┐
│     通知设置                         │
├─────────────────────────────────────┤
│  推送通知                    [开]   │
│                                     │
│  免打扰时段                          │
│  23:00  至  07:00                  │
│                                     │
│  通知类型                            │
│  ● 私信通知                         │
│  ● 评论通知                         │
│  ● 点赞通知                         │
│  ● 关注通知                         │
│  ○ 系统通知                         │
└─────────────────────────────────────┘

小结

这周我学到:

  1. 细粒度控制:全局、分类、渠道三个层次的开关
  2. 免打扰时段:处理跨午夜的情况
  3. 默认策略:根据用户类型设置不同默认值
  4. 缓存优化:高频访问,使用 Redis 缓存

偏好设置让用户完全控制自己的通知体验。