Наша цель – доставлять все сообщения, отправленные с помощью FCM. Однако доставка каждого сообщения иногда приводит к ухудшению общего пользовательского опыта. В других случаях нам необходимо установить ограничения, чтобы FCM мог предоставлять масштабируемый сервис для всех отправителей. Ограничения и квоты, описанные в этом разделе, помогают нам соблюдать баланс между этими важными факторами.
Ограничение количества сообщений, отправляемых на устройства
В HTTP v1 API введены квоты на количество сообщений, отправляемых в минуту, для каждого проекта. Квота по умолчанию, составляющая 600 тысяч сообщений в минуту, покрывает потребности более 99% разработчиков FCM, обеспечивая при этом стабильность системы и минимизируя влияние проектов с пиковыми нагрузками.
Резкие скачки трафика могут привести к ошибкам, связанным с превышением квоты. Если квота превышена, система возвращает код статуса HTTP 429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED"), пока квота не будет пополнена в следующую минуту. Ответы с кодом 429 также могут возвращаться в случае перегрузки, поэтому настоятельно рекомендуем обрабатывать их в соответствии с опубликованными рекомендациями.
Примечания
- Квота на нисходящие сообщения измеряется в сообщениях, а не в запросах.
- Ошибки клиента (коды статуса HTTP 400–499, кроме 429) учитываются.
- Квоты действуют в пределах одной минуты, но эти минуты не привязаны к часам.
Квота на мониторинг
Посмотреть квоту, использование и ошибки можно в консоли Google Cloud:
Перейдите в консоль Google Cloud.
Выберите API и сервисы.
В списке таблиц выберите Firebase Cloud Messaging API.
Выберите Квоты и системные ограничения.
Как запросить увеличение квоты
Прежде чем запрашивать увеличение квоты, убедитесь, что:
- Вы регулярно используете не менее 80% квоты в течение как минимум пяти минут подряд в день.
- Коэффициент ошибок клиента составляет менее 5 %, особенно в периоды пикового трафика.
- Вы следуете рекомендациям по массовой рассылке сообщений.
Если вы соответствуете этим критериям, то можете отправить запрос на увеличение квоты до 25% в консоли Google Cloud, используя следующие данные:
- Перейдите в раздел QUOTA & SYSTEM LIMITS (Квоты и системные ограничения).
- В таблице выберите строку Отправка запросов в минуту.
- Нажмите кнопку Edit (Изменить).
- Следуйте инструкциям.
FCM приложит все усилия, чтобы выполнить запрос (увеличение не гарантируется).
Если вам нужно увеличить квоту на отправку сообщений в связи с предстоящим запуском или временным событием, отправьте запрос в службу поддержки Firebase. Запрашивайте квоту не менее чем за 15 дней, чтобы у нас было достаточно времени на обработку запроса. Если запросов много (более 18 млн сообщений в минуту), уведомление должно быть отправлено не менее чем за 30 дней. Мы можем одобрить только два временных увеличения квоты в год. Общая продолжительность временной квоты в течение года не должна превышать 30 дней. Запросы на запуск и специальные мероприятия по-прежнему зависят от коэффициента ошибок клиента и требований к рекомендациям.
Подробнее о квотах FCM…
Ограничения на сообщения в темах и регулирование разветвления
Подробную информацию можно найти в разделе Квоты и ограничения для сообщений по темам.
Ограничение количества сворачиваемых сообщений
Как описано в разделе Сворачиваемые сообщения, сворачиваемые сообщения – это уведомления без контента, которые могут сворачиваться друг в друга. Если разработчик слишком часто отправляет в приложение одно и то же сообщение, мы задерживаем его, чтобы снизить нагрузку на батарею.
Например, если вы отправите большое количество запросов на синхронизацию электронной почты на одно устройство, мы можем отложить следующий запрос на несколько минут, чтобы устройство могло выполнить синхронизацию с меньшей средней скоростью. Это делается исключительно для того, чтобы ограничить расход заряда батареи.
Если вам нужно отправлять много сообщений за короткий промежуток времени, лучше использовать несворачиваемые сообщения. Чтобы снизить расход заряда батареи, включайте контент в такие сообщения.
Для сворачиваемых сообщений действует ограничение: не более 20 сообщений на приложение на одном устройстве. Лимит восполняется со скоростью одно сообщение каждые три минуты.
Максимальная частота отправки сообщений на одно устройство
На устройства Android можно отправлять до 240 сообщений в минуту и до 5000 сообщений в час. Такое высокое пороговое значение позволяет справляться с кратковременными всплесками трафика, например когда пользователи активно общаются в чате. Это ограничение позволяет избежать ошибок в логике отправки, которые могут привести к случайной разрядке батареи устройства.
Для iOS мы возвращаем ошибку, когда частота превышает ограничения APN.