Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Тематические сообщения FCM, основанные на модели публикации/подписки, позволяют отправлять сообщения на несколько устройств, подписавшихся на определённую тему. Вы составляете тематические сообщения по мере необходимости, а FCM обеспечивает маршрутизацию и надёжную доставку сообщений на нужные устройства.
Например, пользователи локального приложения для прогнозирования приливов и отливов могут подписаться на тему «Оповещения о приливных течениях» и получать уведомления об оптимальных условиях для морской рыбалки в определённых районах. Пользователи спортивного приложения могут подписаться на автоматические обновления результатов игр любимых команд в режиме реального времени.
Некоторые вещи, которые следует иметь в виду относительно тем:
Тематические сообщения лучше всего подходят для такого контента, как погода или другая общедоступная информация.
Тематические сообщения оптимизированы для пропускной способности, а не для задержки . Для быстрой и безопасной доставки на отдельные устройства или небольшие группы устройств направляйте сообщения на регистрационные токены , а не на темы.
Если вам необходимо отправлять сообщения на несколько устройств одного пользователя , рассмотрите возможность групповой отправки сообщений для таких случаев использования.
Тематические сообщения поддерживают неограниченное количество подписок по каждой теме. Однако FCM устанавливает ограничения в следующих областях:
Один экземпляр приложения может быть подписан не более чем на 2000 тем.
Если вы используете пакетный импорт для подписки на экземпляры приложений, каждый запрос ограничен 1000 экземплярами приложений.
Частота новых подписок ограничена для каждого проекта. Если вы отправите слишком много запросов на подписку за короткий промежуток времени, серверы FCM вернут код 429 RESOURCE_EXHAUSTED («квота исчерпана»). Повторите попытку с экспоненциальной задержкой.
Подпишите клиентское приложение на тему
Клиентские приложения могут подписываться на любую существующую тему или создавать новую. Когда клиентское приложение подписывается на новую тему (которой ещё нет в вашем проекте Firebase), в FCM создаётся новая тема с этим именем, и любой клиент может впоследствии подписаться на неё.
Чтобы подписаться на тему, вызовите метод subscribeToTopic() с названием темы. Этот метод возвращает Future , который разрешается при успешной подписке:
[[["Прост для понимания","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"]],["Последнее обновление: 2025-09-04 UTC."],[],[],null,["\u003cbr /\u003e\n\nBased on the publish/subscribe model, FCM topic messaging allows you to send a message\nto multiple devices that have opted in to a particular topic. You compose topic messages as\nneeded, and FCM handles routing and delivering the message reliably to the right\ndevices.\n\nFor example, users of a local tide\nforecasting app could opt in to a \"tidal currents alerts\" topic and receive\nnotifications of optimal saltwater fishing conditions in specified areas. Users of a sports app\ncould subscribe to automatic updates in live game scores for their favorite\nteams.\n\nSome things to keep in mind about topics:\n\n- Topic messaging is best suited for content such as weather, or other publicly\n available information.\n\n- Topic messages are **optimized for throughput rather than latency** . For fast,\n secure delivery to single devices or small groups of devices,\n [target messages to registration tokens](/docs/cloud-messaging/send-message#send_messages_to_specific_devices),\n not topics.\n\n- If you need to send messages to multiple devices *per user* , consider\n [device group messaging](/docs/cloud-messaging/send-message#send_messages_to_device_groups)\n for those use cases.\n\n- Topic messaging supports unlimited subscriptions for each topic. However, FCM\n enforces limits in these areas:\n\n - One app instance can be subscribed to no more than 2000 topics.\n - If you are using [batch import](https://developers.google.com/instance-id/reference/server#manage_relationship_maps_for_multiple_app_instances) to subscribe app instances, each request is limited to 1000 app instances.\n - The frequency of new subscriptions is rate-limited per project. If you send too many subscription requests in a short period of time, FCM servers will respond with a `429 RESOURCE_EXHAUSTED` (\"quota exceeded\") response. Retry with exponential backoff.\n\nSubscribe the client app to a topic\n\nClient apps can subscribe to any existing topic, or they can create a new\ntopic. When a client app subscribes to a new topic name (one that does\nnot already exist for your Firebase project), a new topic of that name is\ncreated in FCM and any client can subsequently subscribe to it.\n\nTo subscribe to a topic, call `subscribeToTopic()` with the topic name. This method\nreturns a `Future`, which resolves when the subscription succeeded: \n\n await FirebaseMessaging.instance.subscribeToTopic(\"topic\");\n\nTo unsubscribe, call `unsubscribeFromTopic()` with the topic name.\n\n`subscribeToTopic()` and `unsubscribeFromTopic()` are not supported for web\nclients. To learn how to manage subscriptions for web users, see\n[Send messages to topics on Web/JavaScript](https://firebase.google.com/docs/cloud-messaging/js/topic-messaging).\n\nNext steps\n\n- Learn how to [send topic messages](/docs/cloud-messaging/send-message#send-messages-to-topics).\n- Learn how to [Manage topic subscriptions on the server](/docs/cloud-messaging/manage-topics)."]]