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

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

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

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

ОшибкаРешение
UNKNOWNНеизвестная или непредвиденная ошибка.
ITEM_UNAVAILABLEОшибка чаще всего возникает на этапе тестирования. Возможные причины: продукты отсутствуют в продакшене или пользователь не входит в группу тестировщиков в 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Продукт, запрошенный для покупки, недоступен в сторе.
INVALID_JSON

JSON резервного пейвола некорректен.

Исправьте дефолтный английский пейвол, затем замените некорректные локальные пейволы. Подробнее об исправлении пейвола — в разделе Настройка пейвола с помощью Remote Config, о замене локальных пейволов — в разделе Определение резервных пейволов.

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. Убедитесь, что статус платной версии приложения Active в налоговых настройках Google. Проверьте актуальность налоговой информации и действительность сертификатов.
  5. Проверьте, привязан ли банковский счёт к приложению — это необходимо для монетизации.
  6. Убедитесь, что продукты доступны в вашем регионе.
  7. Убедитесь, что приложение находится в одном из треков тестирования. Трек Internal testing — самый простой вариант: он не требует проверки и скрывает приложение от пользователей.
NO_PURCHASES_TO_RESTOREGoogle Play не нашёл покупку для восстановления.
AUTHENTICATION_ERRORНеобходимо правильно настроить Adapty SDK с помощью метода Adapty.activate.
BAD_REQUESTНекорректный запрос.
Убедитесь, что выполнены все шаги, необходимые для интеграции с Google Play.
SERVER_ERRORОшибка сервера.
REQUEST_FAILEDСетевая ошибка, которую не удаётся классифицировать точнее.
DECODING_FAILEDНе удалось декодировать ответ.
Проверьте код и убедитесь, что передаваемые параметры корректны. Например, эта ошибка может означать, что используется недействительный API-ключ.
ANALYTICS_DISABLEDОбработка аналитических событий невозможна, так как вы отключили её.
WRONG_PARAMETERОдин или несколько параметров некорректны: пустое значение там, где оно недопустимо, неверный тип и т. д.

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

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

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