Функция отправки сообщений по темам FCM позволяет отправлять сообщения на несколько устройств, которые подписались на определенную тему. Вы составляете сообщения по темам по мере необходимости, а FCM обеспечивает маршрутизацию и надежную доставку сообщений на нужные устройства.
Основные моменты, касающиеся тематических сообщений:
- Наиболее подходит для общедоступной информации, такой как предупреждения о погоде.
- Тематические сообщения оптимизированы для обеспечения высокой пропускной способности, а не задержки. Для быстрой и безопасной доставки на отдельные устройства или небольшие группы следует направлять сообщения регистрационным токенам, а не темам.
Квоты и лимиты
Система обмена сообщениями по темам поддерживает неограниченное количество подписок на каждую тему. Однако FCM устанавливает ограничения в следующих областях:
- Один экземпляр приложения может быть подписан не более чем на 2000 тем.
- При использовании пакетной подписки для подписки на экземпляры приложения каждый запрос ограничен 1000 экземплярами приложения.
Ограничение скорости подписки
Количество запросов на добавление или удаление подписок на темы ограничено 3000 в секунду на проект.
Частота новых подписок ограничена для каждого проекта. Если вы отправите слишком много запросов на подписку за короткий промежуток времени, серверы FCM ответят кодом 429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED"). Повторите попытку с экспоненциальной задержкой.
Регулирование разветвления
Рассылка уведомлений — это процесс отправки сообщения на несколько устройств, например, при выборе тем и групп, или при использовании редактора уведомлений для таргетирования аудиторий или сегментов пользователей.
Распределение сообщений происходит не мгновенно, поэтому иногда одновременно выполняется несколько процессов распределения. Мы ограничиваем количество одновременных процессов распределения сообщений в рамках одного проекта до 1000. После этого мы можем отклонить дополнительные запросы на распределение или отложить их выполнение до завершения некоторых уже выполняющихся процессов.
Фактическая достижимая скорость разветвления запросов зависит от количества проектов, одновременно запрашивающих разветвление. Скорость разветвления в 10 000 запросов в секунду для отдельного проекта не является редкостью, но это число не гарантировано и является результатом общей нагрузки на систему. Важно отметить, что доступная пропускная способность разветвления распределяется между проектами, а не между запросами на разветвление. Таким образом, если в вашем проекте одновременно выполняется два разветвления, то каждое из них получит только половину доступной скорости разветвления. Рекомендуемый способ максимизировать скорость разветвления — это одновременное выполнение только одного активного разветвления.
Следующие шаги
- Узнайте, как управлять подписками на темы с помощью Admin SDK или из клиентского приложения.
- Узнайте, как отправлять сообщения в темы с помощью Admin SDK или HTTP API FCM v1.