Наша цель — всегда доставлять каждое сообщение, отправленное с помощью FCM. Однако доставка каждого сообщения иногда приводит к ухудшению общего пользовательского опыта. В других случаях нам необходимо установить ограничения, чтобы гарантировать масштабируемость сервиса FCM для всех отправителей. Типы ограничений и квот, описанные в этом разделе, помогают нам сбалансировать эти важные факторы.
Ограничение скорости передачи сообщений в нисходящем потоке
В API HTTP v1 были введены квоты на передачу сообщений в потоке, устанавливаемые для каждого проекта и поминутно. Квота по умолчанию в 600 000 сообщений в минуту покрывает более 99% задач разработчиков FCM , обеспечивая при этом стабильность системы и минимизируя влияние нестабильных проектов.
Резкие скачки трафика могут привести к ошибкам превышения квоты. В случае превышения квоты система будет выдавать HTTP-состояние с кодом 429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED") до тех пор, пока квота не будет пополнена в течение следующей минуты. Ответы с кодом 429 также могут возвращаться в ситуациях перегрузки, поэтому настоятельно рекомендуется обрабатывать ошибки 429 в соответствии с опубликованными рекомендациями .
Иметь в виду:
- Квота для нисходящего потока измеряет количество сообщений, а не запросов.
- Учитываются ошибки клиента (коды состояния HTTP 400-499) (за исключением ошибок с кодом 429).
- Квоты устанавливаются поминутно, но эти минуты не привязаны к времени.
Квота мониторинга
Вы можете просмотреть информацию о квотах, использовании и ошибках в консоли Google Cloud, используя следующие инструменты:
- Перейдите в консоль Google Cloud .
- Выберите API и сервисы .
- В списке таблиц выберите Firebase Cloud Messaging API .
- Выберите «Квоты и системные ограничения» .
Запросить увеличение квоты
Перед тем как запросить увеличение квоты, убедитесь в следующем:
- Ваш уровень использования регулярно составляет ≥ 80% от лимита в течение как минимум 5 минут подряд в день.
- У вас показатель ошибок клиентов составляет менее 5%, особенно в часы пиковой нагрузки.
- Вы придерживаетесь передовых методов отправки сообщений в больших масштабах .
Если вы соответствуете этим критериям, вы можете подать заявку на увеличение квоты до +25%, и FCM приложит все практические усилия для выполнения этой заявки (гарантированное увеличение не предусмотрено).
Если вам требуется дополнительная квота на передачу сообщений в связи с предстоящим запуском или временным событием, запросите ее как минимум за 15 дней, чтобы у вас было достаточно времени для обработки запроса. Для крупных запросов (>18 млн сообщений в минуту) требуется уведомление как минимум за 30 дней. Запросы, связанные с запуском и специальными событиями, по-прежнему подлежат учету коэффициента ошибок клиента и требованиям передовой практики.
Для получения более подробной информации см. квоты FCM .
Ограничения на количество сообщений в теме и регулирование частоты распространения
Дополнительные сведения см. в разделе «Квоты и ограничения на отправку сообщений в темы» .
Сворачиваемое ограничение скорости сообщений
Как описано в разделе «Сворачиваемые сообщения» , сворачиваемые сообщения — это уведомления без содержимого, предназначенные для того, чтобы сворачиваться друг на друга. В случае, если разработчик слишком часто повторяет одно и то же сообщение приложению, мы задерживаем отправку сообщений, чтобы уменьшить нагрузку на батарею пользователя.
Например, если вы отправляете большое количество новых запросов на синхронизацию электронной почты на одно устройство, мы можем задержать следующий запрос на синхронизацию электронной почты на несколько минут, чтобы устройство могло синхронизироваться с меньшей средней скоростью. Это ограничение скорости осуществляется исключительно для минимизации расхода заряда батареи пользователя.
Если ваш сценарий использования требует высокой частоты отправки сообщений, то неразворачиваемые сообщения могут быть правильным выбором. Для таких сообщений обязательно включайте в них содержимое, чтобы снизить расход заряда батареи.
Мы ограничиваем количество сворачиваемых сообщений до 20 сообщений на приложение на устройство, с пополнением до 1 сообщения каждые 3 минуты.
Максимальная скорость отправки сообщений на одно устройство.
Для Android можно отправлять до 240 сообщений в минуту и 5000 сообщений в час на одно устройство. Этот высокий порог предназначен для кратковременных всплесков трафика, например, когда пользователи быстро взаимодействуют в чате. Это ограничение предотвращает ошибки в логике отправки, которые могут непреднамеренно разрядить батарею устройства.
В случае iOS мы возвращаем ошибку, если скорость превышает лимиты APNs.