Тема сообщений

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

Основные моменты, касающиеся тематических сообщений:

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

Квоты и лимиты

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

  • Один экземпляр приложения может быть подписан не более чем на 2000 тем.
  • При использовании пакетной подписки для подписки на экземпляры приложения каждый запрос ограничен 1000 экземплярами приложения.

Ограничение скорости подписки

Количество запросов на добавление или удаление подписок на темы ограничено 3000 в секунду на проект.

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

Регулирование разветвления

Рассылка уведомлений — это процесс отправки сообщения на несколько устройств, например, при выборе тем и групп, или при использовании редактора уведомлений для таргетирования аудиторий или сегментов пользователей.

Распределение сообщений происходит не мгновенно, поэтому иногда одновременно выполняется несколько процессов распределения. Мы ограничиваем количество одновременных процессов распределения сообщений в рамках одного проекта до 1000. После этого мы можем отклонить дополнительные запросы на распределение или отложить их выполнение до завершения некоторых уже выполняющихся процессов.

The actual achievable fanout rate is influenced by the number of projects requesting fanouts at the same time. A fanout rate of 10,000 QPS for an individual project is not uncommon, but that number is not a guarantee and is a result of the total load on the system. It is important to note that the available fanout capacity is divided among projects and not across fanout requests. So, if your project has two fanouts in progress, then each fanout will only see half of the available fanout rate. The recommended way to maximize your fanout speed is to only have one active fanout in progress at a time.

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