Если приложение делает запрос с использованием Play Integrity API и вызов завершается неудачно, возвращается код ошибки. Тип возвращаемого кода ошибки зависит от типа запроса:
- Стандартные запросы: API возвращает StandardIntegrityErrorCode .
- Классические запросы: API возвращает IntegrityErrorCode .
Стратегии повторных попыток
Используйте экспоненциальную отсрочку для операций Play Integrity, которые происходят в фоновом режиме и не влияют на взаимодействие с пользователем во время сеанса.
Например, это целесообразно реализовать при подтверждении новых покупок, поскольку эта операция может выполняться в фоновом режиме, а подтверждение не обязательно должно происходить в реальном времени в случае возникновения ошибки.
После первой неудачи начните с начальной задержки в 5 секунд, прежде чем повторить попытку.
Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия выхода, используя каждый раз экспоненциально увеличивающуюся задержку (10 с, 20 с).
Выполняя эти повторные попытки, проверьте наличие сетевого подключения и не перегружайте устройство.
Если вы продолжаете видеть ошибки после трех повторных попыток, воспринимайте результат так, как будто клиент не прошел все проверки целостности. Ошибка может возникнуть по нескольким причинам, включая (но не ограничиваясь): перегруженное устройство, проблемы с сетевым подключением или попытку злоумышленника.
Значения кодов ошибок для библиотеки Java
Дополнительные значения кодов ошибок для встроенной библиотеки
Повторяемые коды ошибок
Причина этих ошибок иногда связана с временными условиями, поэтому вам следует повторить вызов.
NETWORK_ERROR
(код ошибки -3)
Эта ошибка указывает на то, что возникла проблема с сетевым соединением между устройством и системами Play.
Возможное решение
Для восстановления попросите пользователя проверить подключение к сети и используйте простые повторные попытки или экспоненциальную отсрочку, в зависимости от того, какое действие вызвало ошибку.
См. также
NETWORK_ERROR
для классических запросов.
TOO_MANY_REQUESTS
(код ошибки -8)
Вызывающее приложение отправляет слишком много запросов к API, поэтому его активность ограничена.
Возможное решение
- Запрос на увеличение максимального количества запросов в день
- Повторите попытку с экспоненциальной отсрочкой.
См. также
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
для классических запросов.