Обработка ошибок в 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. Также необходимо правильно настроить Adapty SDK с помощью метода 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_ERRORAPI используется некорректно.
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. Убедитесь, что статус платного приложения в настройках налогов Google отображается как Active. Проверьте актуальность налоговых данных и действительность сертификатов.
  5. Проверьте, привязан ли к приложению банковский счёт, необходимый для монетизации.
  6. Проверьте доступность продуктов в вашем регионе.
  7. Убедитесь, что приложение находится в одном из треков тестирования. Internal testing — самый простой вариант, поскольку не требует проверки и скрывает приложение от покупателей.
NO_PURCHASES_TO_RESTOREУстарело в Adapty Android SDK 3.17.3 и 4.0.2: restorePurchases() больше не возвращает эту ошибку. Если нечего восстанавливать, метод завершается успешно с текущим профилем — проверьте в нём статус уровня доступа. В более ранних версиях SDK эта ошибка означает, что Google Play не нашёл покупку для восстановления.
AUTHENTICATION_ERRORНеобходимо правильно настроить Adapty SDK с помощью метода 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 & Paywall Builder.
JS_EXCEPTIONJavaScript флоу вызвал исключение. Прочитайте текст исключения в сообщении об ошибке.
NAVIGATOR_NOT_FOUNDДействие открытия экрана указывает навигатор, который отсутствует в конфигурации представления флоу, и у флоу нет навигатора default для резервного использования. Проверьте цель действия в Flow & Paywall Builder.
INVALID_ACTION_URLДействие открытия URL ссылается на строковый идентификатор, который не преобразуется в URL. Укажите корректный URL для этого действия в Flow & Paywall Builder.

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

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

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