Миграция Adapty Android SDK на v4.1

В Adapty Android SDK 4.1 изменён способ включения Adapty Attribution и переименованы API для внешней атрибуции.

Warning

Переименованные API — это жёсткое изменение. AdaptyAttributionSource полностью удалён — он не помечен как устаревший, и никакого typealias для обратной совместимости нет. Код, который компилируется с 4.0.x, не скомпилируется на 4.1, пока вы не переименуете все вызовы, перечисленные ниже.

Краткий справочник

v4.0v4.1
Адаптивная атрибуция Adapty включена автоматическиАтрибуция Adapty отключена по умолчанию; включите с помощью .withAdaptyAttributionEnabled(true)
Adapty.updateAttribution(attribution, source)Adapty.updateExternalAttribution(attribution, provider)
AdaptyAttributionSourceAdaptyExternalAttributionProvider, с новым значением CUSTOM
AdaptyProfile.appliedAttributionSourcesAdaptyProfile.appliedExternalAttributionProviders

Установка

Установите версию adapty-bom 4.1.0 (или выше) и синхронизируйте проект. BOM автоматически подберёт совместимые версии android-sdk и android-ui. Инструкции по подключению зависимостей см. в разделе Установка Adapty SDK.

Note

Если вы обновляетесь с версии 4.0.0 или 4.0.1, также применяются два изменения из версии 4.0.2:

  • По умолчанию Adapty использует Google Play Billing Library 8 вместо 7.0.0.
  • restorePurchases успешно завершается, когда нечего восстанавливать, и возвращает текущий профиль, вместо того чтобы возвращать ошибку NO_PURCHASES_TO_RESTORE. См. Восстановление покупок.

Атрибуция Adapty отключена по умолчанию

В версии 4.0 и более ранних SDK автоматически регистрировал установки для Атрибуции Adapty. Начиная с версии 4.1, эта функция отключена по умолчанию: SDK не регистрирует установки, слушатель, заданный через setOnInstallationDetailsListener, никогда не срабатывает, а getCurrentInstallationStatus возвращает AdaptyInstallationStatus.Determined.NotAvailable.

Если вы используете Атрибуцию Adapty, включите её при активации SDK:

  val config = AdaptyConfig.Builder("PUBLIC_SDK_KEY")
+     .withAdaptyAttributionEnabled(true)
      .build()
  Adapty.activate(applicationContext, config)

Если вы не используете Adapty Attribution, никаких изменений не требуется.

Переименованные API внешней атрибуции

updateAttribution → updateExternalAttribution

Метод, передающий данные атрибуции от внешнего провайдера (Adjust, AppsFlyer, Branch, Tenjin или пользовательского), переименован, а его параметр source переименован в provider:

- Adapty.updateAttribution(attribution, AdaptyAttributionSource.ADJUST) { error -> /* handle the error */ }
+ Adapty.updateExternalAttribution(attribution, AdaptyExternalAttributionProvider.ADJUST) { error -> /* handle the error */ }

Оба перегруженных варианта сохранены: attribution может быть Map<String, Any> или JSON-строкой (String).

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

AdaptyAttributionSource → AdaptyExternalAttributionProvider

Тип переименован, предопределённые значения остаются прежними: APPLE_ADS, ADJUST, APPSFLYER, BRANCH и TENJIN. Для любого другого провайдера создайте значение из строки: AdaptyExternalAttributionProvider("your_provider").

В версии 4.1 также добавлено предопределённое значение CUSTOM для провайдеров, с которыми Adapty не интегрируется напрямую. В версии 4.0 то же значение было доступно только в виде строки "custom".

AdaptyProfile.appliedAttributionSources → appliedExternalAttributionProviders

Свойство профиля, которое перечисляет провайдеры атрибуции, применённые к профилю, переименовано. Тип его элементов изменяется соответственно:

- if (profile.appliedAttributionSources.contains(AdaptyAttributionSource.APPLE_ADS)) {
+ if (profile.appliedExternalAttributionProviders.contains(AdaptyExternalAttributionProvider.APPLE_ADS)) {
      // Apple Ads attribution has been applied
  }