更新文档
This commit is contained in:
parent
1f97307814
commit
4e211ed1fe
@ -15,7 +15,7 @@
|
||||
|
||||
首次进入 App 会让你填写:
|
||||
|
||||
- `backendUrl`:例如 `http://192.168.1.10:3000`
|
||||
- `backendUrl`:例如 `http://192.168.1.10:7788`
|
||||
- `apiKey`:后端 `.env` 里的 `SMS_GATEWAY_API_KEY`
|
||||
- (不再需要 `deviceId`:由后端根据 `apiKey` 自动归属任务/短信)
|
||||
|
||||
@ -24,7 +24,10 @@
|
||||
- 启动前台服务轮询后端下发发送任务
|
||||
- 注册系统短信接收广播,上报短信内容并解析验证码
|
||||
|
||||
你也可以点击 `检测心跳` 按钮,用于手动验证 App 与后端的网络/鉴权通断。
|
||||
你也可以使用 `短信测试` 功能:
|
||||
|
||||
- 在输入框填写国际格式号码,例如 `+8613712345678`
|
||||
- 点击“短信测试”发送一条固定测试短信到该号码
|
||||
|
||||
## 注意事项
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ npm i
|
||||
npm start
|
||||
```
|
||||
|
||||
默认监听:`http://localhost:3000`
|
||||
默认监听由环境变量 `PORT` 决定(示例:`http://localhost:7788`)
|
||||
|
||||
## 鉴权
|
||||
|
||||
|
||||
@ -42,6 +42,7 @@
|
||||
5. 业务系统从后端查询验证码并完成流程
|
||||
|
||||
发送流程(可选):
|
||||
|
||||
1. 业务系统调用后端发短信接口
|
||||
2. 后端生成发送任务
|
||||
3. 网关轮询/长连接获取任务
|
||||
@ -50,10 +51,10 @@
|
||||
## 4. 技术选型建议
|
||||
|
||||
- **客户端**:Android 原生 Kotlin(推荐)
|
||||
- **网络层**:Retrofit + OkHttp
|
||||
- **网络层**:HttpURLConnection(MVP)
|
||||
- **本地存储**:Room 或轻量 SQLite
|
||||
- **日志**:本地文件 + 后端集中日志
|
||||
- **心跳与保活**:Foreground Service + WorkManager
|
||||
- **保活策略**:Foreground Service(前台轮询)
|
||||
|
||||
> 若主项目使用 uniapp,建议通过原生插件封装短信能力,不建议纯前端层直接处理短信底层功能。
|
||||
|
||||
@ -99,7 +100,7 @@
|
||||
- 前台服务常驻(通知栏提示)
|
||||
- 开机自启恢复服务
|
||||
- 引导用户关闭电池优化限制
|
||||
- 关键任务使用 WorkManager 重试
|
||||
- 失败任务在下次轮询继续重试(可在后续增加失败队列/指数退避)
|
||||
|
||||
## 6. 模块设计
|
||||
|
||||
@ -107,7 +108,7 @@
|
||||
|
||||
1. **sms-receiver**:短信接收与解析
|
||||
2. **sms-sender**:短信发送与发送回执
|
||||
3. **task-sync**:任务拉取、心跳、状态上报
|
||||
3. **task-sync**:任务拉取、状态上报
|
||||
4. **storage**:本地缓存与失败队列
|
||||
5. **api-client**:后端 API 通信
|
||||
6. **security**:签名、鉴权、加密
|
||||
@ -120,10 +121,8 @@
|
||||
- `sender`
|
||||
- `content`
|
||||
- `receivedAt`
|
||||
- `simSlot`
|
||||
- `parsedCode`
|
||||
- `parseStatus`
|
||||
- `uploadStatus`
|
||||
- `rawPduHash`
|
||||
|
||||
### OutboundTask(出站任务)
|
||||
@ -131,7 +130,6 @@
|
||||
- `taskId`
|
||||
- `phone`
|
||||
- `content`
|
||||
- `simSlot`
|
||||
- `status`(pending/sending/success/failed)
|
||||
- `retryCount`
|
||||
- `lastError`
|
||||
@ -140,18 +138,17 @@
|
||||
|
||||
## 7.1 鉴权建议
|
||||
|
||||
- 每台设备分配 `deviceId + deviceSecret`
|
||||
- 请求头携带签名(HMAC-SHA256)
|
||||
- 网关端通过请求头携带 `X-Api-Key: SMS_GATEWAY_API_KEY` 进行鉴权
|
||||
- 使用 HTTPS,拒绝明文传输
|
||||
|
||||
## 7.2 API 列表
|
||||
|
||||
1. `POST /api/v1/sms/inbound`
|
||||
- 作用:上报入站短信
|
||||
- 请求体:发送方、短信内容、时间、设备ID、解析结果
|
||||
- 请求体:发送方、短信内容、时间、解析结果
|
||||
- 返回:`ackId`
|
||||
|
||||
2. `GET /api/v1/device/tasks?deviceId=xxx`
|
||||
2. `GET /api/v1/device/tasks?limit=5`
|
||||
- 作用:拉取发送任务
|
||||
- 返回:任务列表
|
||||
|
||||
@ -159,10 +156,6 @@
|
||||
- 作用:回传发送结果
|
||||
- 请求体:`taskId`、状态、失败原因、运营商回执(如有)
|
||||
|
||||
4. `POST /api/v1/device/heartbeat`
|
||||
- 作用:设备在线心跳
|
||||
- 上报:电量、网络、SIM状态、App版本
|
||||
|
||||
## 8. 验证码解析策略
|
||||
|
||||
## 8.1 正则提取建议
|
||||
|
||||
@ -24,7 +24,7 @@ npm i
|
||||
npm start
|
||||
```
|
||||
|
||||
默认监听:`http://localhost:3000`
|
||||
默认监听:`http://localhost:7788`
|
||||
|
||||
## 2. 构建安卓端
|
||||
|
||||
@ -48,6 +48,6 @@ npm start
|
||||
|
||||
## 4. 后续扩展建议
|
||||
|
||||
- 增加设备心跳接口、设备在线监控
|
||||
- 增加任务重试与失败原因字段
|
||||
- 增加短信去重与解析规则配置(正则规则下发)
|
||||
<!-- end -->
|
||||
Loading…
Reference in New Issue
Block a user