[ PROMPT_NODE_23358 ]
mobile-backend
[ SKILL_DOCUMENTATION ]
# 移动端后端模式
> **本文件涵盖移动客户端特有的后端/API 模式。**
> 通用后端模式请参考 `nodejs-best-practices` 和 `api-patterns`。
> **移动端后端与 Web 后端不同。约束不同,模式也不同。**
---
## ? 移动端后端思维
移动客户端与 Web 客户端不同:
├── 网络不可靠(2G、地铁、电梯)
├── 电池约束(最小化唤醒)
├── 存储有限(不能缓存所有内容)
├── 会话中断(通话、通知)
├── 设备多样性(从旧手机到旗舰机)
└── 二进制更新缓慢(应用商店审核)
**你的后端必须补偿所有这些问题。**
---
## ? AI 移动端后端反模式
### 这些是 AI 在构建移动端后端时常见的错误:
| ❌ AI 默认行为 | 为什么是错的 | ✅ 移动端正确做法 |
|---------------|----------------|-------------------|
| Web 和移动端使用相同 API | 移动端需要精简响应 | 分离移动端端点或字段选择 |
| 返回完整对象 | 浪费带宽、电池 | 部分响应、分页 |
| 不考虑离线 | 无网络时应用崩溃 | 离线优先设计、同步队列 |
| 所有场景使用 WebSocket | 耗电 | 推送通知 + 轮询降级 |
| 没有应用版本控制 | 无法强制更新,破坏性变更 | 版本头、最低版本检查 |
| 通用错误消息 | 用户无法解决问题 | 移动端特定错误代码 + 恢复操作 |
| 基于会话的认证 | 移动应用会重启 | 基于令牌(Token)并支持刷新 |
| 忽略设备信息 | 无法调试问题 | 在 Header 中包含设备 ID、应用版本 |
---
## 1. 推送通知
### 平台架构
┌─────────────────────────────────────────────────────────────────┐
│ 你的后端 │
├─────────────────────────────────────────────────────────────────┤
│ │ │
│ ┌──────────┴──────────┐ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ FCM (Google) │ │ APNs (Apple) │ │
│ │ Firebase │ │ 直接或 FCM │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ ▼ ▼