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