Тематические сообщения на Flutter

На основе модели публикации/подписки тематические сообщения FCM позволяют отправлять сообщение на несколько устройств, которые подписались на определенную тему. Вы составляете тематические сообщения по мере необходимости, а FCM управляет маршрутизацией и надежной доставкой сообщения на нужные устройства.

Например, пользователи локального приложения для прогнозирования приливов могут подписаться на тему «оповещения о приливных течениях» и получать уведомления об оптимальных условиях для рыбалки в соленой воде в определенных районах. Пользователи спортивного приложения могут подписаться на автоматические обновления результатов игр в реальном времени для своих любимых команд.

Вот что следует помнить о темах:

  • Тематические сообщения лучше всего подходят для такого контента, как погода или другая общедоступная информация.

  • Тематические сообщения оптимизированы для пропускной способности, а не для задержки . Для быстрой и безопасной доставки на отдельные устройства или небольшие группы устройств направляйте сообщения на регистрационные токены , а не на темы.

  • Если вам необходимо отправлять сообщения на несколько устройств одного пользователя , рассмотрите возможность групповой отправки сообщений для таких случаев использования.

  • Тема сообщения поддерживает неограниченные подписки для каждой темы. Однако FCM устанавливает ограничения в следующих областях:

    • Один экземпляр приложения может быть подписан не более чем на 2000 тем.
    • Если вы используете пакетный импорт для подписки на экземпляры приложений, каждый запрос ограничен 1000 экземплярами приложений.
    • Частота новых подписок ограничена по проекту. Если вы отправите слишком много запросов на подписку за короткий промежуток времени, серверы FCM ответят кодом 429 RESOURCE_EXHAUSTED («квота превышена»). Повторите попытку с экспоненциальной задержкой.

Подпишите клиентское приложение на тему

Клиентские приложения могут подписываться на любую существующую тему или создавать новую тему. Когда клиентское приложение подписывается на новое название темы (которое еще не существует для вашего проекта Firebase), в FCM создается новая тема с этим названием, и любой клиент может впоследствии подписаться на нее.

Чтобы подписаться на тему, вызовите subscribeToTopic() с именем темы. Этот метод возвращает Future , который разрешается, когда подписка прошла успешно:

await FirebaseMessaging.instance.subscribeToTopic("topic");

Чтобы отписаться, вызовите unsubscribeFromTopic() с названием темы.

subscribeToTopic() и unsubscribeFromTopic() не поддерживаются для веб-клиентов. Чтобы узнать, как управлять подписками для веб-пользователей, см . Отправка сообщений в темы на Web/JavaScript .

Следующие шаги