Обработка ошибок в Android SDK

Каждая ошибка, возвращаемая SDK, имеет тип AdaptyError.

Tip

Включите подробное логирование перед отладкой. Большинство ошибок AdaptyError оборачивают базовую ошибку Play Billing, сети или бэкенда. При включённом подробном логировании (Adapty.logLevel = AdaptyLogLevel.VERBOSE — см. Логирование) эта ошибка выводится в консоль, что обычно указывает на реальную причину.

Important

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

ОшибкаРешение
UNKNOWNЭта ошибка означает, что произошла неизвестная или непредвиденная ошибка.
ITEM_UNAVAILABLEЭта ошибка чаще всего возникает на этапе тестирования. Она может означать, что продукты отсутствуют в production или что пользователь не входит в группу Testers в Google Play.
ADAPTY_NOT_INITIALIZEDSDK Adapty не активирован.
Чаще всего это происходит, когда сплэш-экран или ранний UI-хук вызывает методы Adapty до того, как Adapty.activate завершится. Симптом непостоянный и может не воспроизводиться на эмуляторе, поскольку тайминг на реальном устройстве отличается. Дождитесь завершения Adapty.activate перед вызовом любых других методов SDK. Подробную последовательность см. в разделе Порядок вызовов в Android SDK. Также необходимо правильно настроить SDK Adapty с помощью метода Adapty.activate.
PROFILE_WAS_CHANGEDПрофиль пользователя был изменён во время операции.
Это происходит, когда метод вызывается в то время, пока Adapty.identify ещё выполняется — текущий вызов попадает на профиль, который вот-вот будет заменён, и SDK отклоняет его. Дождитесь завершения Adapty.identify перед вызовом других методов SDK. См. раздел Порядок вызовов в Android SDK.
PRODUCT_NOT_FOUNDЭта ошибка означает, что запрошенный для покупки продукт недоступен в сторе.

CURRENT_SUBSCRIPTION_TO_UPDATE

_NOT_FOUND_IN_HISTORY

Исходная подписка, которую необходимо заменить, не найдена среди активных подписок.
BILLING_SERVICE_TIMEOUTЭта ошибка означает, что запрос превысил максимальное время ожидания до получения ответа от Google Play. Причиной может быть, например, задержка при выполнении действия, запрошенного вызовом Play Billing Library.
FEATURE_NOT_SUPPORTEDЗапрошенная функция не поддерживается Play Store на данном устройстве.
BILLING_SERVICE_DISCONNECTEDЭта ошибка означает, что соединение клиентского приложения с сервисом Google Play Store через BillingClient было разорвано.
BILLING_SERVICE_UNAVAILABLEЭта ошибка означает, что сервис Google Play Billing в данный момент недоступен. В большинстве случаев это означает проблему с сетевым соединением где-то между клиентским устройством и сервисами Google Play Billing.
BILLING_UNAVAILABLE

Эта ошибка означает, что в процессе покупки возникла проблема с биллингом. Возможные причины:

1. Приложение Play Store на устройстве пользователя отсутствует или устарело.

2. Пользователь находится в неподдерживаемой стране.

3. Пользователь входит в корпоративный аккаунт, где администратор отключил покупки.

4. Google Play не смог списать средства с платёжного метода пользователя (например, истёк срок действия кредитной карты).

5. Пользователь не авторизован в приложении Play Store.

DEVELOPER_ERRORЭта ошибка означает, что API используется некорректно.
BILLING_ERRORЭта ошибка означает внутреннюю проблему в самом Google Play.
ITEM_ALREADY_OWNEDПродукт уже куплен.
ITEM_NOT_OWNEDЭта ошибка означает, что запрошенное действие с товаром не выполнено, так как он не принадлежит пользователю.
BILLING_NETWORK_ERRORЭта ошибка означает, что возникла проблема с сетевым соединением между устройством и системами Play.
NO_PRODUCT_IDS_FOUND

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

Если вы столкнулись с этой ошибкой, выполните следующие шаги для её устранения:

  1. Проверьте, что все продукты добавлены в дашборд Adapty.
  2. Убедитесь, что Package name вашего приложения совпадает с тем, что указано в Google Play Console.
  3. Проверьте, что идентификаторы продуктов из сторов совпадают с теми, которые вы добавили в дашборд. Обратите внимание: идентификаторы не должны содержать Bundle ID, если только он не включён в стор изначально.
  4. Убедитесь, что статус оплаты приложения — Active в налоговых настройках Google. Проверьте актуальность налоговой информации и действительность сертификатов.
  5. Проверьте, что к приложению привязан банковский счёт, чтобы оно могло участвовать в монетизации.
  6. Проверьте, доступны ли продукты в вашем регионе.
  7. Убедитесь, что ваше приложение находится в одном из тестовых треков. Трек Internal testing — самый простой вариант, поскольку не требует проверки и скрывает приложение от покупателей.
NO_PURCHASES_TO_RESTOREУстарело в Adapty Android SDK 4.0.2: restorePurchases() больше не возвращает эту ошибку. Если нечего восстанавливать, метод успешно завершается с текущим профилем — проверьте в нём статус уровня доступа. В более ранних версиях SDK эта ошибка означает, что Google Play не нашёл покупку для восстановления.
AUTHENTICATION_ERRORНеобходимо правильно настроить SDK Adapty с помощью метода Adapty.activate.
BAD_REQUESTНекорректный запрос.
Убедитесь, что вы выполнили все шаги, необходимые для интеграции с Google Play.
SERVER_ERRORОшибка сервера.
REQUEST_FAILEDЭта ошибка означает проблему с сетью, которую не удаётся точно определить.
DECODING_FAILEDНе удалось декодировать ответ.
Проверьте код и убедитесь, что передаваемые параметры корректны. Например, эта ошибка может указывать на использование недействительного API-ключа.
ANALYTICS_DISABLEDОбработка аналитических событий невозможна, так как вы отключили её.
WRONG_PARAMETER

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

SDK также возвращает эту ошибку, когда не может прочитать локальный файл резервного пейвола — чаще всего из-за несовпадения версии файла с версией SDK. Скачайте новый файл в дашборде.

LOGGING_OUT_UNIDENTIFIED_USERAdapty.logout() был вызван для пользователя, который так и не был идентифицирован. Вызывайте его только после Adapty.identify.

Ошибки рендеринга флоу

Adapty SDK 4.0 и выше передаёт эти ошибки через onError в вашем AdaptyFlowEventListener, а не возвращает их из вызова метода. См. Обработка событий в Android SDK.

ОшибкаРешение
WRONG_ASSET_TYPEЭлемент изображения во флоу ссылается на ресурс, который является цветовой или градиентной заливкой, поэтому SDK отображает вместо него заглушку. Назначьте ресурс-изображение для этого элемента во Flow Builder.
JS_EXCEPTIONJavaScript флоу выбросил исключение. Прочитайте текст исключения в сообщении об ошибке.
NAVIGATOR_NOT_FOUNDДействие открытия экрана указывает на навигатор, который отсутствует в конфигурации представления флоу, а флоу не имеет навигатора default в качестве запасного варианта. Проверьте цель действия во Flow Builder.
INVALID_ACTION_URLДействие открытия URL ссылается на строковый идентификатор, который не разрешается в URL. Укажите корректный URL для этого действия во Flow Builder.

Другие проблемы

Если вы ещё не нашли решение, можно попробовать следующее:

  • Обновление SDK до последней версии: мы всегда рекомендуем обновляться до последних версий SDK — они более стабильны и содержат исправления известных проблем.
  • Обратитесь в службу поддержки или получите помощь от других разработчиков на форуме поддержки.
  • Напишите в поддержку на support@adapty.io или через чат: если вы не готовы обновлять SDK или это не помогло, свяжитесь с нашей командой поддержки. Обратите внимание, что проблема будет решена быстрее, если вы включите подробное логирование и поделитесь логами с командой. Также можно приложить соответствующие фрагменты кода.