FCM 節流和配額

我們的目標是確保所有透過 FCM 傳送的訊息都能送達。不過,有時傳送每則訊息會導致整體使用者體驗不佳。在其他情況下,我們需要提供界限,確保 FCM 為所有寄件者提供可擴充的服務。本節說明的限制和配額類型,有助於我們平衡這些重要因素。

下游訊息節流

HTTP v1 API 針對下游訊息,推出每專案每分鐘配額。每分鐘 60 萬則訊息的預設配額可滿足超過 99% 的FCM開發人員需求,同時確保系統穩定性,並將尖峰專案的影響降至最低。

流量模式不穩定可能會導致超過配額錯誤。如果超出配額,系統會提供 HTTP 狀態碼 429 RESOURCE_EXHAUSTED (「QUOTA_EXCEEDED」),直到下一分鐘配額重新計算為止。在過載情況下,系統也可能會傳回 429 回應,因此強烈建議您根據已發布的建議處理 429 回應。

注意事項:

  • 下游配額是衡量郵件數量,而非要求數量。
  • 系統會計算用戶端錯誤 (HTTP 狀態碼 400-499),但不包括 429。
  • 配額是以每分鐘為單位,但這些分鐘數並非以時鐘為準。

監控配額

您可以在 Google Cloud 控制台查看配額、用量和錯誤:

  1. 前往 Google Cloud 控制台。

  2. 選取「API 和服務」。

  3. 從表格清單中選取「Firebase 雲端通訊 API」。

  4. 選取「配額與系統限制」。

申請提高配額

申請提高配額前,請先確認下列事項:

  • 用量經常達到配額的 80% 以上,且每天至少持續 5 分鐘。
  • 用戶端錯誤率低於 5%,尤其是在流量高峰期間。
  • 您遵循大量傳送訊息的最佳做法。

如果您符合這些條件,可以透過 Google Cloud 控制台,使用下列方式申請提高配額,最多可提高 25%:

  1. 前往「配額與系統限制」。
  2. 在表格中選取「每分鐘傳送的要求數」列。
  3. 按一下 [Edit] (編輯) 按鈕。
  4. 按照操作說明提出要求。

FCM 會盡力滿足要求 (不保證一定會提高)。

如果因即將推出產品或臨時活動,需要更多下游訊息配額,請透過 Firebase 支援團隊提出提高配額要求。請至少提前 15 天提出配額要求,確保有足夠時間處理。如果是大型要求 (每分鐘超過 1,800 萬則訊息),則須至少提前 30 天通知。我們每年只能核准 2 個臨時配額事件。全年的臨時配額總時長不得超過 30 天。發布和特別活動要求仍須符合用戶端錯誤率和最佳做法規定。

詳情請參閱「FCM 配額」。

主題訊息限制和展開節流

詳情請參閱「主題訊息配額和限制」。

可收合訊息調節

如「可收合訊息」一文所述,可收合訊息是沒有內容的通知,設計目的是彼此收合。如果開發人員過於頻繁地向應用程式重複傳送相同訊息,我們會延遲傳送訊息,減少對使用者電池的影響。

舉例來說,如果您傳送大量新的電子郵件同步要求至單一裝置,我們可能會將下一個電子郵件同步要求延遲幾分鐘,讓裝置以較低的平均速率同步。這項節流措施的目的,是為了限制使用者體驗到的電池影響。

如果您的用途需要高突發傳送模式,則不可收合訊息可能是合適的選擇。對於這類訊息,請務必在訊息中加入內容,以減少電池消耗。

可收合訊息的上限為每部裝置上每個應用程式 20 則,每 3 分鐘可補充 1 則。

傳送至單一裝置的訊息速率上限

在 Android 裝置上,每分鐘最多可傳送 240 則訊息,每小時最多可傳送 5,000 則訊息。這個高門檻是為了因應短期的流量暴增,例如使用者在即時通訊中快速互動。這項限制可避免傳送邏輯發生錯誤,導致裝置電池意外耗盡。

如果是 iOS,當頻率超過 APNs 限制時,我們會傳回錯誤。