パブリッシュ / サブスクライブ モデルに基づく FCM トピック メッセージングでは、特定のトピックにオプトインした複数のデバイスにメッセージを送信できます。必要に応じて作成したトピック メッセージを FCM がルーティング処理し、確実に正しいデバイスにメッセージを配信します。
たとえば、地域の潮汐予測アプリのユーザーは、「潮流警報」トピックにオプトインし、特定の地域の海釣りに最適な状況の通知を受信できます。スポーツアプリのユーザーは、お気に入りのチームの実況ゲームスコアの自動更新に登録できます。
トピックに関する留意点を以下に示します。
トピック メッセージングは、天気、その他の広く入手可能な情報コンテンツに最適です。
トピック メッセージは、レイテンシではなくスループットに対して最適化されます。単一のデバイスまたはデバイスの小グループに高速で安全に配信する場合は、トピックではなく登録トークンをメッセージのターゲットとしてください。
各ユーザーの複数のデバイスにメッセージを送信する必要がある場合は、そのようなユースケース向けのデバイス グループ メッセージングを検討してください。
トピック メッセージングでは、トピックごとの登録数に制限はありませんが、FCM により次の制限が課されます。
- 1 つのアプリ インスタンスが登録できるのは、2,000 トピックまでです。
- 一括インポートを使用してアプリ インスタンスを登録する場合、各リクエストのアプリ インスタンスの数が 1,000 に制限されます。
- 新規登録の頻度がプロジェクトごとに制限されます。短期間に送信する登録リクエストが多すぎると、FCM サーバーから
429 RESOURCE_EXHAUSTED
(「割り当てを超過した」)というレスポンスが返されます。この場合は、指数バックオフを使用して再試行します。
クライアント アプリをトピックに登録する
クライアント アプリを既存のトピックに登録することも、新しいトピックを作成することもできます。クライアント アプリを新しいトピック名(Firebase プロジェクトにまだ存在していないトピック名)に登録すると、その名前の新しいトピックが FCM に作成され、その後すべてのクライアントはそのトピック名に登録できるようになります。
トピックに登録するには、トピック名を指定して subscribeToTopic()
を呼び出します。このメソッドは Future
を返します。これは登録が正常に完了すると解決されます。
await FirebaseMessaging.instance.subscribeToTopic("topic");
登録解除するには、トピック名を指定して unsubscribeFromTopic()
を呼び出します。
subscribeToTopic()
と unsubscribeFromTopic()
は、ウェブ クライアントではサポートされていません。ウェブユーザーの登録を管理する方法については、ウェブや JavaScript でメッセージをトピックに送信するをご覧ください。
次のステップ
- トピック メッセージの送信方法を確認します。
- サーバーでトピック登録を管理する方法を確認します。