Google 會運用 AI 技術將內容翻譯成你偏好的語言,但可能會出錯。
Firebase 雲端通訊疑難排解與常見問題
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
本頁面提供 Cloud Messaging 的疑難排解說明,並解答常見問題。
通知編輯器和 FCM 有何不同?
Firebase Cloud Messaging 透過用戶端 SDK 和 HTTP 伺服器通訊協定,提供完整的訊息功能。如果部署作業有更複雜的訊息傳遞需求,FCM 是合適的選擇。
通知撰寫工具是以 Firebase Cloud Messaging 為基礎建構的輕量型無伺服器訊息解決方案。通知編輯器提供容易使用的圖形控制台,並減少程式設計需求,讓使用者能傳送訊息,重新吸引並留住使用者、促進應用程式業務拓展,以及支援行銷廣告活動。
| 功能 |
|
通知編輯器 |
Cloud Messaging |
| 目標 |
單一裝置 |
|
|
|
已訂閱主題的用戶端 (即天氣) |
|
|
|
預先定義使用者區隔 (應用程式、版本、語言) 中的用戶端 |
|
|
|
指定分析目標對象中的用戶端 |
|
|
|
裝置群組中的用戶端 |
|
|
|
從用戶端到伺服器的上游 |
|
|
| 訊息類型 |
通知大小上限為 2 KB |
|
|
|
資料訊息大小上限為 4 KB |
|
|
| 廣告放送 |
立即 |
|
|
|
用戶端裝置當地時間 (未來) |
|
|
| 數據分析 |
內建通知分析集合和漏斗分析 |
|
|
是否需要使用其他 Firebase 服務,才能使用 FCM?
您可以將 Firebase Cloud Messaging 做為獨立元件使用,不必搭配其他 Firebase 服務。
為什麼目標裝置似乎無法接收訊息?
如果裝置似乎未順利接收訊息,請先檢查以下兩個可能原因:
通知訊息的前景訊息處理。當應用程式在裝置上處於前景時,用戶端應用程式需要新增訊息處理邏輯,才能處理通知訊息。詳情請參閱 iOS 和 Android 相關說明。
網路防火牆限制。如果貴組織的防火牆會限制網際網路的往來流量,您必須設定防火牆,允許與 FCM 連線,Firebase Cloud Messaging 用戶端應用程式才能接收訊息。要開啟的通訊埠如下:
FCM 通常使用 5228,但有時會使用 5229 和 5230。
FCM 不提供特定 IP,因此您應允許防火牆接受連至 Google ASN 15169 中所列 IP 區塊內所有 IP 位址的傳出連線。
為什麼我的 Android 應用程式未呼叫 onMessageReceived?
應用程式在背景執行時,系統匣會顯示通知訊息,且不會呼叫 onMessageReceived。如果是含有資料酬載的通知訊息,系統匣會顯示通知訊息,使用者輕觸通知時啟動的意圖,則可擷取通知訊息隨附的資料。
詳情請參閱「接收及處理訊息」。
從備份還原有效應用程式執行個體後,為什麼傳送訊息時會收到 404 錯誤?
FID (Firebase 安裝 ID) 是應用程式執行個體的 ID。根據預設,系統會備份及還原 Firebase 安裝資料。因此,在還原情況下,還原的應用程式執行個體和原始應用程式執行個體會共用相同的 FID。由於 FCM 每個 FID 只會儲存一個權杖,因此如果原始應用程式執行個體和還原的應用程式執行個體都在使用中,當其中一個應用程式執行個體向 FCM 註冊時,另一個應用程式執行個體的權杖就會遭到移除,導致 404 錯誤。
建議開發人員在應用程式中採取下列做法:
- 排除
備份中的 Firebase 安裝資料。Firebase 安裝資料會儲存在
PersistedInstallation....json 檔案中。檔案名稱是應用程式的常數。例如 <exclude domain="file" path="PersistedInstallation.W0R...GQ.json"
/>
Apple 宣布將淘汰 APNs 的舊版二進位通訊協定。我需要採取任何行動嗎?
否。Firebase Cloud Messaging 已於 2017 年改用 HTTP/2 型 APNs 通訊協定。如果您使用 FCM 將通知傳送至 iOS 裝置,則無須採取任何行動。
FCM 配額與限制
如何在 2 分鐘內通知大量客戶?
我們無法支援這個用途。你必須在 5 分鐘內分散流量。
我的應用程式會通知使用者事件,且這些訊息必須立即傳送,才能支援我的商業模式。可以提高配額嗎?
很抱歉,我們無法因此核准配額增加要求。您必須將流量分散在 5 分鐘內,避免流量激增。
我的訊息與預定活動有關。如何將所有流量集中在整點傳送?
建議您在活動開始前至少 5 分鐘傳送通知。或者,您也可以傳送資料訊息,並實作平台類似 onMessageReceived 處理常式的機制,預先排定本機通知。
429 錯誤對我和我的商家來說很難處理。我可以申請豁免或提高配額,避免收到 429 錯誤嗎?
我們瞭解配額限制可能會造成不便,但配額是維持服務可靠性的重要機制,因此無法提供豁免。使用重試機制正確處理 429 錯誤。
配額提高要求需要多久才能完成?
配額增加
要求取決於 FCM 的使用情形。無論如何,您應該會在幾個工作天內收到回覆。在某些情況下,我們可能會針對您使用 FCM 的方式和各種情況來回溝通,這可能會延長處理時間。如果符合所有規定,大部分要求會在 2 週內處理完畢。
可以為臨時活動申請更多配額嗎?
您可以申請額外配額,支援最多 1 個月的活動。
請至少在活動開始前 1 個月提出要求,並清楚說明活動開始和結束時間,FCM會盡一切努力滿足要求。如果獲准,這些配額增加將在活動結束日期後恢復。
我目前的配額是否會變更?
雖然 Google 不會輕易變更配額,但可能會視需要調整,以維護系統完整性。Google 會盡可能提前通知您這類異動。請務必更新 Cloud MSA 聯絡人,提高收到服務公告的機率。
FCM 項舊版 API 淘汰
伺服器端 API 將於 2026 年 9 月淘汰
哪些 API 和功能已淘汰,且即將停用?如果我正在使用這些 API,該怎麼辦?
所有 InstanceId 伺服器 API 和裝置群組功能都已淘汰,並將於 2027 年 9 月 29 日停用。下表詳細說明已淘汰的 API/功能,以及需要採取的行動。
| API 名稱
|
API 端點
|
預定用途
|
對客戶的影響
|
敬請採取行動
|
| InstanceId 資訊 API
|
https://iid.googleapis.com/iid/info
|
取得與 InstanceId / FCM 權杖相關的資訊
|
2027 年 9 月 29 日後,向這個 API 提出的請求都會失敗。
|
如果客戶使用 API 驗證權杖,請使用 FCM V1 傳送 API,並將 validate_only 設為 true。
如果客戶使用 API 取得主題訂閱資訊,請改用新的主題訂閱 API。
|
| InstanceId 主題訂閱 API
|
https://iid.googleapis.com/iid/v1/…/rel/topics
https://iid.googleapis.com/iid/v1:batchAdd
https://iid.googleapis.com/iid/v1:batchRemove
|
透過舊版主題訂閱 API 將權杖訂閱至主題。
|
2027 年 9 月 29 日後,向這些 API 提出的要求將會失敗。
|
遷移至FCM主題訂閱伺服器 API,以訂閱及取消訂閱主題。 |
| InstanceId 批次匯入 API
|
https://iid.googleapis.com/iid/v1:batchImport
|
在伺服器端以批次方式為 iOS 建立 FCM 權杖。
|
2027 年 9 月 29 日後,向這個 API 提出的要求將會失敗。
系統不支援從伺服器端的 APNs 權杖建立 FCM 註冊。
|
您可以使用 Apple 的 APNs 服務,透過 APNs 權杖傳送通知。
如要取得 FCM 提供的額外福利,請將應用程式與 FCM iOS SDK 整合,以便在用戶端建立 FCM 註冊。
|
| 裝置群組管理 API
|
https://fcm.googleapis.com/fcm/notification
https://fcm.googleapis.com/gcm/notification
https://fcm.googleapis.com/iid/notification
https://fcm.googleapis.com/notification
|
新增 / 移除/ 擷取裝置群組成員。
|
2027 年 9 月 29 日後,向這個 API 提出的要求將會失敗。
|
請參閱這份指南,瞭解如何停用這項功能。
訊息仍可傳送至個別 FCM 註冊,而非群組權杖。
|
| 傳送至裝置群組
|
https://fcm.googleapis.com/v1/projects/…/messages:send
|
使用群組 notification_key 將訊息傳送至裝置群組。 |
這個 API 會繼續運作,但 2027 年 9 月 29 日後將不再支援裝置群組權杖。 |
如果我使用 Firebase Admin SDK 管理主題訂閱項目,會受到淘汰影響嗎?What should I do?
如果您使用舊版 Firebase Admin SDK 管理主題訂閱項目,就會受到這項淘汰作業的影響。
您需要將 Firebase Admin SDK 升級至下列版本:
| Platform
|
受影響的 Admin SDK 版本 |
要升級至的 Admin SDK 版本 |
| Node.js
|
<=14.4.0
|
>=14.5.0
|
| Python
|
<=7.6.0
|
>=7.7.0
|
| Java
|
<=9.10.0
|
>=9.11.0
|
| Go
|
<=4.21.0
|
>=4.22.0
|
| .NET
|
<=3.6.0
|
>=3.7.0
|
2027 年 9 月 29 日前,我會看到服務降級嗎?
不會。您有 12 個月的時間從已淘汰的 API 遷移至替代方案,服務不會降級。強烈建議您盡早規劃遷移作業,以免受到停用影響。
2027 年 9 月 29 日後,呼叫已淘汰的 API 時,預期會收到錯誤訊息。
新使用者能否在停用前使用已淘汰的 API/功能?
新使用者可在 2027 年 1 月 1 日前,開始使用已淘汰的 API/功能。2027 年 1 月 1 日後,新使用者將無法使用已淘汰的 API。使用已淘汰 API 的使用者,可繼續使用這些 API 至 2027 年 9 月 29 日。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2026-10-15 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2026-10-15 (世界標準時間)。"],[],[]]