核心技術方案對比
| 方案 | 原理 | 優點 | 缺點 | 適用場景 |
| **長連接 (WebSocket/TCP)** | 客戶端主動建立持久連接,服務器主動推送 | 實時性強、雙向通信、服務器可控 | 需維護連接池、心跳、重連、佔用服務器資源 | IM、即時通知、協作應用 |
| **第三方推送 SDK (JPush/個推/小米/華為/OPPO/vivo)** | 集成廠商通道 + 自建長連接,系統級保活 | 到達率高、省電、支持離線消息、廠商通道覆蓋國產手機 | 依賴第三方、有額度限制、需適配多廠商 | 電商、資訊、工具類 App |
| **系統級通道 (FCM/APNs/統一推送聯盟) | 作業系統級別的推送服務,App 進程被殺也能喚醒 | 最高到達率、系統級保活、無需 App 自建長連接 | 國內 Android 碎片化嚴重、iOS 需 APNs 證書 | 所有需要離線推送的 App |
| **輪詢 / 定時拉取** | 客戶端定時請求服務器檢查新消息 | 實現簡單、無連接維護 | 實時性差、浪費帶寬電量、服務器壓力大 | 低實時性需求、簡單應用 |
京東級電商 App 典型架構
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ 客戶端 │────▶│ 推送網關集群 │────▶│ 廠商通道/系統通道 │
│ (SDK+長連接) │ │ (路由/降級/統計)│ │ (小米/華為/FCM/APNs)│
└─────────────┘ └──────────────┘ └─────────────────┘
│
┌──────┴──────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ 消息中心 │ │ 業務系統 │
│ (存儲/撤回)│ │ (訂單/營銷)│
└──────────┘ └──────────┘
關鍵技術點
1. 多通道融合策略
// 客戶端 SDK 初始化邏輯
PushManager.init(context, new PushConfig()
.enableHuaweiPush(true) // 華為通道
.enableXiaomiPush(true) // 小米通道
.enableFCM(true) // Google FCM (海外)
.enableSelfLongConnection() // 自建長連接 (前台在線時優先)
);
2. 消息分級與降級
| 級別 | 場景 | 通道 | 到達要求 |
| 高優 | 支付結果、物流簽收、安全預警 | 廠商通道 + 系統通道 + 自建長連 | 必達、秒級 |
| 中優 | 優惠券到期、新品上架 | 自建長連 + 廠商通道 | 分鐘級 |
| 低優 | 營銷活動、推薦內容 | 定時拉取 / 低頻推送 | 小時級 |
3. 客戶端保活技巧
- **前台**:自建 WebSocket 長連接(心跳 30s)
- **後台**:依賴廠商通道(小米/華為/OPPO/vivo/魅族/FCM)
- **進程死**:系統通道喚醒應用進程處理消息
- **統一推送聯盟**:標準化接口,一次接入覆蓋主流國產 ROM
開源/商業方案推薦
- JPush (極光):國內最成熟,支持全通道、標簽/別名、豐富統計
- Getui (個推):大數據畫像、精準推送、支持統一推送聯盟
- Firebase FCM:Google 官方、海外必備、免費額度大
- 自建:Netty + Redis Cluster + 多協議網關(大廠自研)
參考資源