Files
plates-server/src/push-notifications/README_PUSH_TEST.md
richarjiang cc83b84c80 feat(push): 新增设备推送和测试功能
- 新增基于设备令牌的推送通知接口
- 添加推送测试服务,支持应用启动时自动测试
- 新增推送测试文档说明
- 更新 APNS 配置和日志记录
- 迁移至 apns2 库的 PushType 枚举
- 替换订阅密钥文件
- 添加项目规则文档
2025-10-15 19:09:51 +08:00

132 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 推送测试功能
本文档介绍如何使用推送测试功能,该功能可以在应用程序启动时自动获取表中的已有 token 进行消息推送。
## 功能概述
推送测试功能包括以下特性:
1. **自动测试**:应用程序启动时自动执行推送测试(可通过环境变量控制)
2. **手动触发**:通过 API 接口手动触发推送测试
3. **统计信息**:获取推送令牌的统计信息
4. **可配置内容**:可以自定义测试推送的标题和内容
## 环境变量配置
`.env` 文件中添加以下配置:
```env
# 推送测试配置
# 启用/禁用应用启动时的推送测试
ENABLE_PUSH_TEST=false
# 测试推送消息内容(可选,如果不提供将使用默认值)
PUSH_TEST_TITLE=测试推送
PUSH_TEST_BODY=这是一条测试推送消息,用于验证推送功能是否正常工作。
```
### 环境变量说明
- `ENABLE_PUSH_TEST`: 设置为 `true` 启用应用启动时的推送测试,设置为 `false` 禁用(默认为 `false`
- `PUSH_TEST_TITLE`: 测试推送的标题(可选)
- `PUSH_TEST_BODY`: 测试推送的内容(可选)
## API 接口
### 1. 手动触发推送测试
**请求方式**: `POST`
**请求路径**: `/api/push-test/trigger`
**响应示例**:
```json
{
"code": 0,
"message": "Push test completed",
"data": {
"success": true,
"message": "Push test completed"
}
}
```
### 2. 获取推送令牌统计信息
**请求方式**: `GET`
**请求路径**: `/api/push-test/stats`
**响应示例**:
```json
{
"code": 0,
"message": "获取推送令牌统计信息成功",
"data": {
"totalTokens": 100,
"activeTokens": 85,
"inactiveTokens": 15,
"recentlyActiveTokens": 60
}
}
```
## 工作原理
1. **自动测试流程**:
- 应用启动时,`PushTestService` 会检查 `ENABLE_PUSH_TEST` 环境变量
- 如果启用,服务会在应用完全启动后 5 秒执行推送测试
- 测试会获取最多 10 个活跃的推送令牌
- 向这些令牌发送测试推送消息
2. **手动测试流程**:
- 通过调用 `/api/push-test/trigger` 接口手动触发测试
- 测试流程与自动测试相同
3. **统计信息**:
- `totalTokens`: 总令牌数
- `activeTokens`: 活跃令牌数
- `inactiveTokens`: 非活跃令牌数
- `recentlyActiveTokens`: 最近 7 天活跃的令牌数
## 注意事项
1. **生产环境使用**:
- 在生产环境中使用前,请确保测试推送内容不会对用户造成困扰
- 建议在非高峰时段进行测试
2. **令牌限制**:
- 自动测试每次最多获取 10 个令牌,避免发送过多推送
- 只会向标记为 `isActive=true` 的令牌发送推送
3. **错误处理**:
- 如果推送失败,服务会记录详细的错误日志
- 无效的令牌会被自动标记为非活跃状态
## 日志记录
推送测试功能会记录以下日志:
- 测试开始和结束
- 发送成功和失败的统计
- 每个令牌的推送结果
- 错误详情
这些日志可以帮助排查推送问题。
## 示例用法
### 启用自动测试
1.`.env` 文件中设置 `ENABLE_PUSH_TEST=true`
2. 重启应用程序
3. 查看日志确认测试是否成功执行
### 手动触发测试
```bash
curl -X POST http://localhost:3002/api/push-test/trigger
```
### 查看统计信息
```bash
curl -X GET http://localhost:3002/api/push-test/stats