146 lines
2.7 KiB
Markdown
146 lines
2.7 KiB
Markdown
|
|
# 后端接口 TODO 清单 - 通知推送模块
|
|||
|
|
|
|||
|
|
## 1. 同步通知到后端
|
|||
|
|
**文件**: `LocalNotificationManager.java`
|
|||
|
|
**接口路径**: `POST /api/notifications/sync`
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"notificationId": "string",
|
|||
|
|
"type": "string",
|
|||
|
|
"title": "string",
|
|||
|
|
"content": "string",
|
|||
|
|
"timestamp": "number"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**返回数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"success": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明**:
|
|||
|
|
- 将本地生成的通知同步到后端
|
|||
|
|
- 用于跨设备通知同步
|
|||
|
|
|
|||
|
|
## 2. 获取未读通知数量
|
|||
|
|
**文件**: `MainActivity.java`, `NotificationsActivity.java`
|
|||
|
|
**接口路径**: `GET /api/notifications/unread/count`
|
|||
|
|
**请求参数**: userId(从token中获取)
|
|||
|
|
**返回数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"unreadCount": "number",
|
|||
|
|
"byType": {
|
|||
|
|
"system": "number",
|
|||
|
|
"interaction": "number",
|
|||
|
|
"follow": "number",
|
|||
|
|
"message": "number",
|
|||
|
|
"live": "number"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 标记所有通知为已读
|
|||
|
|
**文件**: `NotificationsActivity.java`
|
|||
|
|
**接口路径**: `POST /api/notifications/read/all`
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"userId": "string",
|
|||
|
|
"type": "string"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**返回数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"success": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 删除通知
|
|||
|
|
**文件**: `NotificationsActivity.java`
|
|||
|
|
**接口路径**: `DELETE /api/notifications/{notificationId}`
|
|||
|
|
**请求参数**: notificationId (路径参数)
|
|||
|
|
**返回数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"success": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 推送通知集成
|
|||
|
|
|
|||
|
|
### Firebase Cloud Messaging (FCM)
|
|||
|
|
1. 注册设备Token
|
|||
|
|
- 接口路径: `POST /api/devices/register`
|
|||
|
|
- 请求参数: `{deviceToken: string, platform: "android"}`
|
|||
|
|
|
|||
|
|
2. 注销设备Token
|
|||
|
|
- 接口路径: `POST /api/devices/unregister`
|
|||
|
|
- 请求参数: `{deviceToken: string}`
|
|||
|
|
|
|||
|
|
3. 更新通知设置
|
|||
|
|
- 接口路径: `PUT /api/notifications/settings`
|
|||
|
|
- 请求参数: `{enablePush: boolean, types: string[]}`
|
|||
|
|
|
|||
|
|
### 推送消息格式
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"notification": {
|
|||
|
|
"title": "string",
|
|||
|
|
"body": "string",
|
|||
|
|
"icon": "string"
|
|||
|
|
},
|
|||
|
|
"data": {
|
|||
|
|
"type": "string",
|
|||
|
|
"targetId": "string",
|
|||
|
|
"action": "string"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 通知类型
|
|||
|
|
- `system`: 系统通知
|
|||
|
|
- `interaction`: 互动通知(点赞、评论)
|
|||
|
|
- `follow`: 关注通知
|
|||
|
|
- `message`: 私信通知
|
|||
|
|
- `live`: 直播通知(关注的主播开播)
|
|||
|
|
|
|||
|
|
## WebSocket 实时推送
|
|||
|
|
|
|||
|
|
### 连接
|
|||
|
|
- WebSocket URL: `ws://api.example.com/notifications`
|
|||
|
|
- 连接时携带 token: `?token={token}`
|
|||
|
|
|
|||
|
|
### 接收消息格式
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"type": "notification",
|
|||
|
|
"data": {
|
|||
|
|
"id": "string",
|
|||
|
|
"type": "string",
|
|||
|
|
"title": "string",
|
|||
|
|
"content": "string",
|
|||
|
|
"timestamp": "number",
|
|||
|
|
"isRead": false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 心跳保持
|
|||
|
|
- 每30秒发送一次心跳: `{"type": "ping"}`
|
|||
|
|
- 服务器响应: `{"type": "pong"}`
|