Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

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

Некоторые вещи, которые следует помнить о темах:

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

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

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

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

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

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

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

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

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

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

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