Обработка кодов ошибок Play Integrity API

Если приложение делает запрос с использованием Play Integrity API и вызов завершается неудачно, возвращается код ошибки. Тип возвращаемого кода ошибки зависит от типа запроса:

Стратегии повторных попыток

Используйте экспоненциальную отсрочку для операций Play Integrity, которые происходят в фоновом режиме и не влияют на взаимодействие с пользователем во время сеанса.

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

После первой неудачи начните с начальной задержки в 5 секунд, прежде чем повторить попытку.

Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия выхода, используя каждый раз экспоненциально увеличивающуюся задержку (10 с, 20 с).

Выполняя эти повторные попытки, проверьте наличие сетевого подключения и не перегружайте устройство.

Если вы продолжаете видеть ошибки после трех повторных попыток, воспринимайте результат так, как будто клиент не прошел все проверки целостности. Ошибка может возникнуть по нескольким причинам, включая (но не ограничиваясь): перегруженное устройство, проблемы с сетевым подключением или попытку злоумышленника.

Значения кодов ошибок для библиотеки Java

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

Дополнительные значения кодов ошибок для встроенной библиотеки

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

Повторяемые коды ошибок

Причина этих ошибок иногда связана с временными условиями, поэтому вам следует повторить вызов.

NETWORK_ERROR (код ошибки -3)

Эта ошибка указывает на то, что возникла проблема с сетевым соединением между устройством и системами Play.

Возможное решение

Для восстановления попросите пользователя проверить подключение к сети и используйте простые повторные попытки или экспоненциальную отсрочку, в зависимости от того, какое действие вызвало ошибку.

См. также

NETWORK_ERROR для классических запросов.

TOO_MANY_REQUESTS (код ошибки -8)

Вызывающее приложение отправляет слишком много запросов к API, поэтому его активность ограничена.

Возможное решение

  1. Запрос на увеличение максимального количества запросов в день
  2. Повторите попытку с экспоненциальной отсрочкой.

См. также

TOO_MANY_REQUESTS для классических запросов.

GOOGLE_SERVER_UNAVAILABLE (код ошибки -12)

Неизвестная внутренняя ошибка сервера Google.

Возможное решение

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

См. также

GOOGLE_SERVER_UNAVAILABLE для классических запросов.

CLIENT_TRANSIENT_ERROR (код ошибки -18)

На клиентском устройстве произошла временная ошибка.

Для стандартных запросов API это поддерживается начиная с версии 1.3.0 библиотеки Play Integrity API для Kotlin и Java , плагина Google Play Integrity Plugin для Unity 1.3.0 или более поздней версии и Play Core Native SDK 1.13.0 или более поздней версии.

Возможное решение

Повторите попытку с экспоненциальной отсрочкой.

См. также

CLIENT_TRANSIENT_ERROR для классических запросов.

Примечание. При сообщении об использовании запроса Classic API возвращается значение -17.

INTERNAL_ERROR (код ошибки -100)

Неизвестная внутренняя ошибка.

Возможное решение

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

См. также

INTERNAL_ERROR для классических запросов.

STANDARD_INTEGRITY_INTERNAL_ERROR (код ошибки -100)

Неизвестная внутренняя ошибка.

Возможное решение

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

См. также

См. INTEGRITY_INTERNAL_ERROR для классических запросов.

STANDARD_INTEGRITY_INITIALIZATION_FAILED (код ошибки -102)

Произошла ошибка при инициализации Standard Integrity API.

Возможное решение

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

См. также

См. INTEGRITY_INITIALIZATION_FAILED для классических запросов.

Неповторяемые коды ошибок

Автоматические повторные попытки вряд ли помогут в этих случаях. Однако повторная попытка вручную может помочь, если пользователь устранит причину, вызвавшую проблему. Например, если пользователь обновит свою версию Play Store до поддерживаемой версии, может сработать повторение исходной операции вручную.

API_NOT_AVAILABLE (код ошибки -1)

Версия Play Store, установленная на устройстве, может быть старой, а API Integrity недоступен. Другая возможность заключается в том, что Integrity API не включен в консоли Google Play.

Возможное решение

  • Убедитесь, что Integrity API включен в консоли Google Play.
  • Попросите пользователя обновить Play Store.

См. также

См. API_NOT_AVAILABLE для классического запроса.

PLAY_STORE_NOT_FOUND (код ошибки -2)

На устройстве не обнаружено официального приложения Play Store.

Возможное решение

Попросите пользователя установить или включить Google Play Store.

См. также

См. PLAY_STORE_NOT_FOUND для классического запроса.

PLAY_STORE_ACCOUNT_NOT_FOUND (код ошибки -4)

Примечание. Об этом сообщается только для классического запроса через IntegrityErrorCode .

На устройстве не обнаружена учетная запись Play Store. Обратите внимание, что API целостности Play теперь поддерживает запросы без аутентификации. Этот код ошибки используется только для старых версий Play Store, которые не поддерживаются.

Возможное решение

Попросите пользователя обновиться и войти в Google Play Store.

APP_NOT_INSTALLED (код ошибки -5)

Приложение для звонков не установлено. Что-то не так (возможно, приступ).

Возможное решение

Недействительно. Считайте результат так, как будто клиент не прошел все проверки целостности.

См. также

См. APP_NOT_INSTALLED для классического запроса.

PLAY_SERVICES_NOT_FOUND (код ошибки -6)

Сервисы Play недоступны или требуют обновления.

Возможное решение

Попросите пользователя установить, обновить или включить Play Services.

См. также

См. APP_NOT_INSTALLED для классического запроса.

APP_UID_MISMATCH (код ошибки -7)

UID вызывающего приложения (идентификатор пользователя) не соответствует идентификатору из диспетчера пакетов.

Возможное решение

Недействительно. Считайте результат так, как будто клиент не прошел все проверки целостности.

См. также

См. APP_UID_MISMATCH для классического запроса.

CANNOT_BIND_TO_SERVICE (код ошибки -9)

Привязка к сервису в Play Store не удалась. Это может быть связано с тем, что на устройстве установлена ​​старая версия Play Store.

Возможное решение

Попросите пользователя обновить Google Play Store.

См. также

См. CANNOT_BIND_TO_SERVICE для классического запроса.

NONCE_TOO_SHORT (код ошибки -10)

Примечание. Об этом сообщается только для классического запроса через IntegrityErrorCode .

Длина nonce слишком коротка. Nonce должен иметь длину не менее 16 байт перед кодировкой base64.

Возможное решение

Повторите попытку с более длинным номером nonce.

NONCE_TOO_LONG (код ошибки -11)

Примечание. Об этом сообщается только для классического запроса через IntegrityErrorCode .

Длина nonce слишком велика. Значение nonce должно быть меньше 500 байт перед кодировкой base64.

Возможное решение

Повторите попытку с более коротким одноразовым номером.

NONCE_IS_NOT_BASE64 (код ошибки -13)

Примечание. Об этом сообщается только для классического запроса через IntegrityErrorCode .

Nonce не кодируется как веб-безопасная строка без переноса в формате Base64.

Возможное решение

Повторите попытку, указав nonce в правильном формате.

PLAY_STORE_VERSION_OUTDATED (код ошибки -14)

Приложение Google Play Store необходимо обновить.

Возможное решение

Попросите пользователя обновить Google Play Store.

См. также

См. PLAY_STORE_VERSION_OUTDATED для классического запроса.

PLAY_SERVICES_VERSION_OUTDATED (код ошибки -15)

Сервисы Google Play необходимо обновить.

Возможное решение

Попросите пользователя обновить сервисы Google Play.

См. также

См. PLAY_SERVICES_VERSION_OUTDATED для классического запроса.

CLOUD_PROJECT_NUMBER_IS_INVALID (код ошибки -16)

Предоставленный номер облачного проекта недействителен.

Возможное решение

Используйте номер облачного проекта для облачного проекта, для которого вы включили Play Integrity API.

См. также

См. CLOUD_PROJECT_NUMBER_IS_INVALID для классического запроса.

REQUEST_HASH_TOO_LONG (код ошибки -17)

Примечание. Об этом сообщается только при использовании стандартного запроса через StandardIntegrityErrorCode .

Предоставленный requestHash слишком длинный. Длина requestHash должна быть меньше 500 символов.

Возможное решение

Повторите попытку с более коротким requestHash .

INTEGRITY_TOKEN_PROVIDER_INVALID (код ошибки -19)

Примечание. Об этом сообщается только для стандартного запроса через StandardIntegrityErrorCode .

Недопустимый StandardIntegrityTokenProvider . Этот код ошибки доступен только для запросов стандартного API, где он поддерживается начиная с версии библиотеки 1.3.0 для языков программирования Kotlin и Java, плагина Google Play Integrity Plugin для Unity 1.3.0 или выше и Play Core Native SDK 1.13.0 или выше.

Возможное решение

Запросите нового поставщика токенов целостности.

STANDARD_INTEGRITY_INITIALIZATION_NEEDED (код ошибки -101)

StandardIntegrityManager не инициализирован.

Возможное решение

Сначала вызовите StandardIntegrityManager_init() .

См. также

См. INTEGRITY_INITIALIZATION_NEEDED для классических запросов.

STANDARD_INTEGRITY_INVALID_ARGUMENT (код ошибки -103)

В API стандартной целостности передан недопустимый аргумент.

Возможное решение

Повторите попытку с правильным аргументом.

См. также

См. INTEGRITY_INVALID_ARGUMENT для классических запросов.