基於發布/訂閱模型,FCM 主題消息傳遞允許您向已選擇加入特定主題的多個設備發送消息。您可以根據需要撰寫主題消息,FCM 負責處理路由並將消息可靠地傳遞到正確的設備。
例如,本地潮汐預報應用程序的用戶可以選擇“潮汐流警報”主題並接收指定區域最佳鹹水捕魚條件的通知。體育應用程序的用戶可以訂閱他們最喜歡的球隊實時比賽比分的自動更新。
有關主題的一些注意事項:
主題消息最適合天氣或其他公開信息等內容。
主題消息針對吞吐量而不是延遲進行了優化。為了快速、安全地傳送到單個設備或一小組設備,將消息定位到註冊令牌,而不是主題。
如果您需要向每個用戶的多個設備發送消息,請考慮針對這些用例的設備組消息傳遞。
主題消息支持對每個主題的無限訂閱。但是,FCM 在這些方面實施了限制:
- 一個應用實例可以訂閱不超過 2000 個主題。
- 如果您使用批量導入訂閱應用實例,則每個請求限制為 1000 個應用實例。
- 新訂閱的頻率受每個項目的速率限制。如果您在短時間內發送過多的訂閱請求,FCM 服務器將響應
429 RESOURCE_EXHAUSTED
(“超出配額”)響應。使用指數退避重試。
為客戶端應用程序訂閱主題
客戶端應用程序可以訂閱任何現有主題,也可以創建新主題。當客戶端應用程序訂閱一個新主題名稱(您的 Firebase 項目尚不存在的主題名稱)時,將在 FCM 中創建一個具有該名稱的新主題,隨後任何客戶端都可以訂閱它。
要訂閱主題,請使用主題名稱調用subscribeToTopic()
。此方法返回一個Future
,它在訂閱成功時解析:
await FirebaseMessaging.instance.subscribeToTopic("topic");
要取消訂閱,請使用主題名稱調用unsubscribeFromTopic()
。
下一步
- 了解如何發送主題消息。
- 了解如何管理服務器上的主題訂閱。
- 詳細了解另一種發送到多個設備的方式——設備群組消息。