Коды ошибок FCM

Коды ошибок REST для API HTTP v1

Ответы на запросы HTTP v1 содержат код ошибки, сообщение об ошибке и статус ошибки. Они также могут содержать массив с details сведениями об ошибке.

Вот два примера сообщений об ошибке:

Пример 1: Ошибка в ответе на HTTP-запрос API версии 1 с недопустимым значением в сообщении данных.

{
  "error": {
    "code": 400,
    "message": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "message.data[0].value",
            "description": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12"
          }
        ]
      }
    ]
  }
}

Пример 2: Ошибка ответа на HTTP-запрос API версии 1 с недействительным регистрационным токеном.

{
  "error": {
    "code": 400,
    "message": "The registration token is not a valid FCM registration token",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
        "errorCode": "INVALID_ARGUMENT"
      }
    ]
   }
}

Обратите внимание, что оба сообщения имеют одинаковый код и статус, но массив details содержит значения разных типов. В первом примере тип type.googleapis.com/google.rpc.BadRequest указывает на ошибку в значениях запроса. Во втором примере тип type.googleapis.com/google.firebase.fcm.v1.FcmError указывает на ошибку, специфичную для FCM. Для многих ошибок массив details содержит информацию, необходимую для отладки и поиска решения.

В таблице ниже перечислены коды ошибок REST API FCM v1 и их описания.

Код ошибки Описание и этапы решения проблемы
UNSPECIFIED_ERROR Дополнительная информация об этой ошибке отсутствует. Никто.
INVALID_ARGUMENT (код ошибки HTTP = 400) Параметры запроса недействительны. Возвращается расширение типа google.rpc.BadRequest , указывающее, какое поле было недействительным. Возможные причины включают некорректную регистрацию, некорректное имя пакета, слишком большой размер сообщения, некорректный ключ данных, некорректный TTL или другие некорректные параметры.
Неверная регистрация : проверьте формат регистрационного токена, передаваемого на сервер. Убедитесь, что он совпадает с регистрационным токеном, который клиентское приложение получает при регистрации в FCM. Не усекайте токен и не добавляйте лишние символы.
Недопустимое имя пакета : Убедитесь, что сообщение было адресовано регистрационному токену, имя пакета которого совпадает со значением, переданным в запросе.
Сообщение слишком большое : Убедитесь, что общий размер данных полезной нагрузки, включенных в сообщение, не превышает ограничений FCM: 4096 байт для большинства сообщений или 2048 байт в случае сообщений в темы. Это включает как ключи, так и значения.
Недопустимый ключ данных : Убедитесь, что данные полезной нагрузки не содержат ключ (например, from, gcm или любое значение с префиксом google), используемый внутри FCM. Обратите внимание, что некоторые слова (например, collapse_key) также используются FCM, но разрешены в полезной нагрузке, в этом случае значение полезной нагрузки будет перезаписано значением FCM.
Недопустимое значение TTL : Убедитесь, что значение, используемое в ttl, является целым числом, представляющим продолжительность в секундах от 0 до 2 419 200 (4 недели).
Неверные параметры : Убедитесь, что предоставленные параметры имеют правильное имя и тип.
UNREGISTERED (код ошибки HTTP = 404) Экземпляр приложения был отменен в FCM. Обычно это означает, что используемый токен больше недействителен и необходимо использовать новый. Эта ошибка может быть вызвана отсутствием регистрационных токенов или незарегистрированными токенами.
Отсутствие регистрации : Если целью сообщения является значение token , проверьте, содержит ли запрос регистрационный токен.
Не зарегистрирован : Действующий регистрационный токен может перестать быть действительным в ряде случаев, в том числе:
- Если клиентское приложение отменяет регистрацию в FCM.
- Если клиентское приложение автоматически удаляется из реестра, что может произойти, если пользователь удалит приложение. Например, на iOS, если служба обратной связи APNs сообщила о недействительности токена APNs.
- Если срок действия регистрационного токена истек (например, Google может принять решение обновить регистрационные токены или срок действия токена APNs для устройств iOS истек).
- Если клиентское приложение обновлено, но новая версия не настроена на получение сообщений.
Во всех этих случаях удалите этот регистрационный токен с сервера приложений и прекратите использовать его для отправки сообщений.
SENDER_ID_MISMATCH (код ошибки HTTP = 403) Аутентифицированный идентификатор отправителя отличается от идентификатора отправителя, указанного в регистрационном токене. Регистрационный токен привязан к определенной группе отправителей. Когда клиентское приложение регистрируется в FCM, оно должно указать, каким отправителям разрешено отправлять сообщения. При отправке сообщений клиентскому приложению следует использовать один из этих идентификаторов отправителя. Если вы переключитесь на другого отправителя, существующие регистрационные токены работать не будут.
QUOTA_EXCEEDED (код ошибки HTTP = 429) Превышен лимит отправки для целевого объекта сообщения. Возвращается расширение типа google.rpc.QuotaFailure , указывающее, какая квота была превышена. Эта ошибка может быть вызвана превышением квоты на скорость отправки сообщений, превышением квоты на скорость отправки сообщений устройством или превышением квоты на скорость отправки сообщений по темам.
Превышена скорость отправки сообщений : скорость отправки сообщений слишком высока. Необходимо снизить общую скорость отправки сообщений. Используйте экспоненциальную задержку с минимальной начальной задержкой в ​​1 минуту для повторной попытки отправки отклоненных сообщений.
Превышена скорость отправки сообщений на устройство : скорость отправки сообщений на конкретное устройство слишком высока. См. ограничение скорости отправки сообщений на одно устройство . Уменьшите количество сообщений, отправляемых на это устройство, и используйте экспоненциальную задержку для повторной отправки.
Превышена скорость отправки сообщений по теме : скорость отправки сообщений подписчикам определенной темы слишком высока. Уменьшите количество отправляемых сообщений для этой темы и используйте экспоненциальную задержку с минимальной начальной задержкой в ​​1 минуту для повторной попытки отправки.
UNAVAILABLE (код ошибки HTTP = 503) Сервер перегружен. Сервер не смог обработать запрос вовремя. Повторите запрос, но необходимо:
— Учитывайте заголовок Retry-After, если он включен в ответ от сервера подключений FCM.
— Внедрите экспоненциальную задержку в механизм повторных попыток (например, если вы ждали одну секунду перед первой попыткой, подождите не менее двух секунд перед следующей, затем 4 секунды и так далее). Если вы отправляете несколько сообщений, рассмотрите возможность применения джиттера. Для получения дополнительной информации см. раздел «Обработка повторных попыток» или проверьте панель состояния FCM , чтобы определить, есть ли какие-либо сбои в работе сервиса, влияющие на FCM. Отправители, создающие проблемы, рискуют быть внесены в черный список.
INTERNAL (код ошибки HTTP = 500) Произошла неизвестная внутренняя ошибка. Сервер столкнулся с ошибкой при попытке обработки запроса. Вы можете повторить тот же запрос, следуя рекомендациям в разделе «Обработка повторных попыток» или проверив панель состояния FCM , чтобы определить, нет ли каких-либо текущих сбоев в работе FCM. Если ошибка сохраняется, обратитесь в службу поддержки Firebase.
THIRD_PARTY_AUTH_ERROR (код ошибки HTTP = 401) Сертификат APNs или ключ аутентификации веб-push недействительны или отсутствуют. Сообщение, предназначенное для устройства iOS или зарегистрированное в системе веб-push, не может быть отправлено. Проверьте действительность ваших учетных данных для разработки и использования в рабочей среде.

Коды ошибок Admin SDK

В таблице ниже перечислены коды ошибок API Firebase Admin FCM и их описания, а также рекомендуемые шаги по их устранению.

Код ошибки Описание и этапы решения проблемы
messaging/invalid-argument В метод FCM был передан недопустимый аргумент. Сообщение об ошибке должно содержать дополнительную информацию.
messaging/invalid-recipient Получатель сообщения указан неверно. Сообщение об ошибке должно содержать дополнительную информацию.
messaging/invalid-payload Предоставлен недопустимый объект полезной нагрузки сообщения. Сообщение об ошибке должно содержать дополнительную информацию.
messaging/invalid-data-payload-key Содержимое сообщения содержит недопустимый ключ. Информацию о ключах, использование которых ограничено, см. в справочной документации по DataMessagePayload .
messaging/payload-size-limit-exceeded Размер предоставленного сообщения превышает ограничения FCM . Для большинства сообщений ограничение составляет 4096 байт. Для сообщений, отправляемых в темы, ограничение составляет 2048 байт. Общий размер полезной нагрузки включает как ключи, так и значения.
messaging/invalid-options Предоставлен недопустимый объект параметров сообщения. Сообщение об ошибке должно содержать дополнительную информацию.
messaging/invalid-registration-token Предоставлен недействительный регистрационный токен. Убедитесь, что он совпадает с регистрационным токеном, который клиентское приложение получает при регистрации в FCM . Не сокращайте и не добавляйте к нему лишние символы.
messaging/registration-token-not-registered Предоставленный регистрационный токен не зарегистрирован. Ранее действительный регистрационный токен может быть аннулирован по различным причинам, в том числе:
  • Клиентское приложение отменило свою регистрацию в FCM .
  • Клиентское приложение было автоматически удалено из системы. Это может произойти, если пользователь удалит приложение или, на платформах Apple, если служба обратной связи APNs сообщит о недействительности токена APNs.
  • Срок действия регистрационного токена истек. Например, Google может принять решение обновить регистрационные токены, или срок действия токена APNs для устройств Apple мог истечь.
  • Клиентское приложение было обновлено, но новая версия не настроена на прием сообщений.
Во всех этих случаях удалите этот регистрационный токен и прекратите использовать его для отправки сообщений.
messaging/invalid-package-name Сообщение было адресовано регистрационному токену, имя пакета которого не соответствует указанному параметру restrictedPackageName .
messaging/message-rate-exceeded Слишком высокая скорость отправки сообщений на конкретный целевой адрес. Уменьшите количество сообщений, отправляемых на это устройство или в эту тему, и не повторяйте попытку отправки сообщений на этот целевой адрес.
messaging/device-message-rate-exceeded Слишком высокая скорость отправки сообщений на конкретное устройство. Уменьшите количество сообщений, отправляемых на это устройство, и не повторяйте попытку отправки на него сразу же.
messaging/topics-message-rate-exceeded Слишком высока частота отправки сообщений подписчикам по определенной теме. Уменьшите количество отправляемых сообщений по этой теме и не повторяйте попытку отправки сообщений сразу же.
messaging/too-many-topics Регистрационный токен был использован для подписки на максимальное количество тем и больше подписаться на него невозможно.
messaging/invalid-apns-credentials Сообщение, предназначенное для устройства Apple, не может быть отправлено, поскольку необходимый SSL-сертификат APNs не был загружен или истек. Проверьте действительность ваших сертификатов для разработки и производственной среды.
messaging/mismatched-credential Учетные данные, используемые для аутентификации этого SDK, не имеют разрешения на отправку сообщений на устройство, соответствующее предоставленному регистрационному токену. Убедитесь, что учетные данные и регистрационный токен принадлежат одному и тому же проекту Firebase. См. раздел «Добавление Firebase в ваше приложение» для получения документации по аутентификации Firebase Admin SDK .
messaging/authentication-error SDK не смог пройти аутентификацию на серверах FCM . Убедитесь, что вы аутентифицируете Firebase Admin SDK с помощью учетных данных, имеющих необходимые разрешения для отправки сообщений FCM . См. раздел «Добавление Firebase в ваше приложение» для получения документации по аутентификации Firebase Admin SDK .
messaging/server-unavailable Сервер FCM не смог обработать запрос вовремя. Вам следует повторить тот же запрос, но с соблюдением следующих условий:
  • Учитывайте заголовок Retry-After если он содержится в ответе от сервера подключений FCM .
  • В механизме повторных попыток используйте экспоненциальную задержку. Например, если вы ждали одну секунду перед первой попыткой, подождите не менее двух секунд перед следующей, затем четыре секунды и продолжайте увеличивать интервал в секундах. Если вы отправляете несколько сообщений, задерживайте каждое из них независимо на дополнительную случайную величину, чтобы избежать одновременной отправки нового запроса на все сообщения.
Отправители, создающие проблемы, рискуют быть занесены в черный список.
messaging/internal-error Сервер FCM столкнулся с ошибкой при попытке обработки запроса. Вы можете повторить тот же запрос, следуя инструкциям, указанным в предыдущей строке messaging/server-unavailable . Если ошибка сохраняется, пожалуйста, сообщите о проблеме в наш канал поддержки для сообщений об ошибках .
messaging/unknown-error Была возвращена неизвестная ошибка сервера. Для получения более подробной информации см. необработанный ответ сервера в сообщении об ошибке. Если вы получили эту ошибку, пожалуйста, сообщите о ней полностью в наш канал поддержки по сообщениям об ошибках .