设备管理与降级

同步失败怎么办

如果同步推送失败怎么办?我设计了一个降级方案:

  • 同步失败时,其他设备的未读数暂时不准。
  • 当 App 打开时,主动查询同步状态——拉取服务端权威未读数,拉平本地。
  • 推送负责「及时」,打开 App 负责「兜底」。

实时消息同步

用户正在 App 内查看消息中心,其他设备发送消息,怎么实时显示?

我使用了 WebSocket:

  • 消息中心打开时建立长连接。
  • 新消息到达 → 服务端通过 WebSocket 推送 → 界面实时刷新。
  • 长连接只在消息中心场景使用(高实时),不用在所有场景。

设备管理

用户可能更换设备,需要管理:

设备注册:

  • App 启动时注册 / 更新设备 token。
  • 记录平台、机型、最后活跃时间。

设备清理:

  • 定期清理不活跃设备(超过 N 天未活跃)。
  • 清理失效 token(结合 APNs 反馈服务)。
  • 避免设备表无限膨胀。

多设备的上限

  • 一个用户通常限制设备数量(如最多 10 台)。
  • 超限时踢掉最不活跃的设备。
  • 防止异常设备堆积。

一句话

同步的完整性靠「推送及时 + 打开兜底」双保险;实时场景用 WebSocket;设备靠注册 + 清理治理。降级设计让同步在失败时也能最终一致。

下一章处理通知轰炸:限流防骚扰。