パブリッシュ/サブスクライブ モデルに基づいて、FCM トピック メッセージングを使用すると、特定のトピックにオプトインした複数のデバイスにメッセージを送信できます。必要に応じてトピック メッセージを作成すると、FCM がメッセージのルーティングと適切なデバイスへの確実な配信を処理します。
たとえば、地元の潮汐予報アプリのユーザーは、「潮流アラート」トピックにオプトインして、指定された地域での最適な海水釣り条件の通知を受け取ることができます。スポーツ アプリのユーザーは、お気に入りのチームのライブ ゲーム スコアの自動更新を購読できます。
トピックについては、次の点に注意してください。
トピック メッセージングは、天気やその他の公開情報などのコンテンツに最適です。
トピック メッセージは、待ち時間ではなくスループットを重視して最適化されています。単一のデバイスまたはデバイスの小さなグループに高速かつ安全に配信するには、メッセージのターゲットをトピックではなく登録トークンにします。
ユーザーごとに複数のデバイスにメッセージを送信する必要がある場合は、それらのユースケースでデバイス グループ メッセージングを検討してください。
トピック メッセージングは、トピックごとに無制限のサブスクリプションをサポートします。ただし、FCM は次の領域で制限を適用します。
- 1 つのアプリ インスタンスをサブスクライブできるトピックは 2000 までです。
- バッチ インポートを使用してアプリ インスタンスをサブスクライブしている場合、各リクエストは 1000 個のアプリ インスタンスに制限されます。
- 新しいサブスクリプションの頻度は、プロジェクトごとにレート制限されています。短期間にあまりにも多くのサブスクリプション リクエストを送信すると、FCM サーバーは
429 RESOURCE_EXHAUSTED
(「クォータを超えました」) レスポンスで応答します。指数バックオフで再試行します。
クライアント アプリをトピックにサブスクライブする
クライアント アプリは、既存のトピックをサブスクライブするか、新しいトピックを作成できます。クライアント アプリが新しいトピック名 (Firebase プロジェクトにまだ存在しないもの) をサブスクライブすると、その名前の新しいトピックが FCM で作成され、その後、任意のクライアントがそれにサブスクライブできます。
トピックを購読するには、トピック名を指定してsubscribeToTopic()
を呼び出します。このメソッドは、サブスクリプションが成功したときに解決されるFuture
を返します。
await FirebaseMessaging.instance.subscribeToTopic("topic");
購読を解除するには、トピック名を指定してunsubscribeFromTopic()
を呼び出します。
次のステップ
- トピック メッセージの送信方法をご覧ください。
- サーバーでトピック サブスクリプションを管理する方法を学習します。
- 複数のデバイスに送信するもう 1 つの方法であるデバイス グループ メッセージングについて詳しくは、こちらをご覧ください。