我們的目標是確保透過 FCM 傳送的每則訊息都能順利送達。不過,如果傳送每則訊息,有時會導致整體使用者體驗不佳。在其他情況下,我們需要提供界線,確保 FCM 為所有傳送者提供可擴充的服務。本節所述的限制和配額類型有助於我們平衡這些重要因素。
下游訊息節流
HTTP v1 API 針對下游訊息傳送作業,導入了每分鐘每專案的配額。每分鐘 60 萬則訊息的預設配額,可滿足超過 99% 的FCM開發人員需求,同時確保系統穩定性,並將尖峰專案的影響降至最低。
流量模式出現尖峰可能會導致超出配額錯誤。如果超出配額,系統會提供 HTTP 狀態碼 429 RESOURCE_EXHAUSTED
(「QUOTA_EXCEEDED」),直到下一個分鐘配額重新填滿為止。在過載情況下,系統也可能會傳回 429 回應,因此強烈建議您根據已發布的建議處理 429 錯誤。
注意事項:
- 下游配額是計算郵件數量,而非要求數量。
- 系統會計算用戶端錯誤 (HTTP 狀態碼 400-499),但不包括 429。
- 配額是以每分鐘為單位,但這些分鐘數並非以時鐘時間為準。
監控配額
您可以在 Google Cloud 控制台使用下列方式查看配額、用量和錯誤:
- 前往 Google Cloud 控制台。
- 選取「API 和服務」。
- 從表格清單中選取「Firebase Cloud Messaging API」。
- 選取「QUOTA & SYSTEM LIMITS」(配額和系統限制)。
申請提高配額
申請提高配額前,請確認以下事項:
- 每天至少有 5 分鐘的配額用量 ≥ 80%。
- 用戶端錯誤率低於 5%,尤其是在流量高峰期間。
- 您遵循大量傳送訊息的最佳做法。
如符合這些條件,您可以提交配額調高要求,最多可調高 25%,FCM 會盡一切努力滿足要求 (但無法保證一定能調高)。
如果即將推出產品或舉辦臨時活動,需要更多下游訊息配額,請至少提前 15 天申請配額,確保有足夠時間處理要求。如果是大型要求 (每分鐘超過 1,800 萬則訊息),請至少提前 30 天通知我們。發布和特別活動要求仍須符合用戶端錯誤率和最佳做法規定。
詳情請參閱 FCM 配額。
主題訊息限制和扇出節流
詳情請參閱「主題訊息傳送配額與限制」。
可收合訊息節流
如「可收合訊息」一文所述,可收合訊息是沒有內容的通知,設計目的是彼此收合。如果開發人員過於頻繁地將相同訊息傳送至應用程式,我們會延遲傳送訊息,以減少對使用者電池的影響。
舉例來說,如果您傳送大量新的電子郵件同步要求至單一裝置,我們可能會延遲幾分鐘再處理下一個電子郵件同步要求,讓裝置以較低的平均速率同步處理。這項節流措施嚴格來說是為了限制使用者感受到的電池影響。
如果您的用途需要高爆量傳送模式,則不可摺疊訊息可能是合適的選擇。對於這類訊息,請務必在訊息中加入內容,以減少電池消耗。
我們限制每個裝置上每個應用程式的摺疊訊息數量,每波最多 20 則,每 3 分鐘可補充 1 則。
單一裝置的訊息速率上限
在 Android 裝置上,你每分鐘最多可傳送 240 則訊息,每小時最多可傳送 5,000 則訊息。這個高門檻是為了允許短期流量爆增,例如使用者透過即時通訊快速互動時。這項限制可防止傳送邏輯發生錯誤,導致裝置電池電量意外耗盡。
如果速率超過 APNs 限制,iOS 會傳回錯誤。