Push Notification系统设计
一. 数据库表设计
1. 设备令牌表device_token
device_id: 设备标识,主键
device_type: 设备类型iOS或Android,必须字段
device_token: 设备令牌,设备类型为iOS时必须字段
user_id: 用户标识,可以为空
2. Android消息表notication
device_id: 设备标识
user_id: 用户标识
content: 消息体
二. 接口设计
- 收集和更新设备令牌 post_device_token
请求参数: 同数据库表device_token
返回结果: 成功或失败标识
业务逻辑:
- 以device_id为条件,没有纪录则新增,有纪录则更新
- user_id刚开始为空,用户登录后加入,用户登出后清空
- Android拉取消息 get_notification
请求参数:
user_id: 用户标识,未注册用户或者已登出用户为空
device_id: 设备标识,必须参数
返回结果: 未推送消息列表
业务逻辑:
- 有消息时纪录到表Notification中
- 拉取时根据user_id和device_id进行匹配,2个字段任1个匹配即可。注意:user_id相同时要排除空user_id
- 客户端拉取后立即清除
三. 推送消息
- iOS根据deviceToken直接发送;Android将消息纪录在Notification表中,等待拉取。
- 用户相关的消息,根据user_id为过滤条件,为用户发送消息。