На основе модели публикации/подписки обмен сообщениями по темам FCM позволяет отправлять сообщение на несколько устройств, которые выбрали определенную тему. Вы составляете тематические сообщения по мере необходимости, а FCM обеспечивает маршрутизацию и надежную доставку сообщения на нужные устройства.
Например, пользователи местного приложения для прогнозирования приливов и отливов могут подписаться на тему «Предупреждения о приливных течениях» и получать уведомления об оптимальных условиях рыбалки в морской воде в определенных районах. Пользователи спортивного приложения могли подписаться на автоматические обновления результатов матчей своих любимых команд в реальном времени.
Что следует помнить о темах:
Тематические сообщения лучше всего подходят для такого контента, как погода или другая общедоступная информация.
Тематические сообщения оптимизированы по пропускной способности, а не по задержке . Для быстрой и безопасной доставки на отдельные устройства или небольшие группы устройств нацеливайте сообщения на регистрационные токены , а не на темы.
Если вам нужно отправлять сообщения на несколько устройств одного пользователя , рассмотрите возможность обмена сообщениями группы устройств для этих случаев использования.
Обмен сообщениями по темам поддерживает неограниченное количество подписок на каждую тему. Однако FCM устанавливает ограничения в следующих областях:
- На один экземпляр приложения можно подписаться не более чем на 2000 тем.
- Если вы используете пакетный импорт для подписки на экземпляры приложения, каждый запрос ограничен 1000 экземплярами приложения.
- Частота новых подписок ограничена для каждого проекта. Если вы отправите слишком много запросов на подписку за короткий период времени, серверы FCM ответят
429 RESOURCE_EXHAUSTED
(«квота превышена»). Повторите попытку с экспоненциальной задержкой.
Подписать клиентское приложение на тему
Клиентские приложения могут подписаться на любую существующую тему или создать новую тему. Когда клиентское приложение подписывается на новое имя темы (которое еще не существует для вашего проекта Firebase), в FCM создается новая тема с этим именем, и любой клиент впоследствии может подписаться на нее.
Чтобы подписаться на тему, вызовите subscribeToTopic()
с названием темы. Этот метод возвращает Future
, который разрешается при успешной подписке:
await FirebaseMessaging.instance.subscribeToTopic("topic");
Чтобы отказаться от подписки, вызовите unsubscribeFromTopic()
с названием темы.
subscribeToTopic()
и unsubscribeFromTopic()
не поддерживаются для веб-клиентов. Чтобы узнать, как управлять подписками для веб-пользователей, см. раздел Отправка сообщений в темы в Интернете/JavaScript .
Следующие шаги
- Узнайте, как отправлять тематические сообщения .
- Узнайте, как управлять подписками на темы на сервере .