Миграция Adapty Android SDK на v4.1
В Adapty Android SDK 4.1 изменён способ включения Adapty Attribution и переименованы API для внешней атрибуции.
Переименованные API — это жёсткое изменение. AdaptyAttributionSource полностью удалён — он не помечен как устаревший, и никакого typealias для обратной совместимости нет. Код, который компилируется с 4.0.x, не скомпилируется на 4.1, пока вы не переименуете все вызовы, перечисленные ниже.
Краткий справочник
| v4.0 | v4.1 |
|---|---|
| Адаптивная атрибуция Adapty включена автоматически | Атрибуция Adapty отключена по умолчанию; включите с помощью .withAdaptyAttributionEnabled(true) |
Adapty.updateAttribution(attribution, source) | Adapty.updateExternalAttribution(attribution, provider) |
AdaptyAttributionSource | AdaptyExternalAttributionProvider, с новым значением CUSTOM |
AdaptyProfile.appliedAttributionSources | AdaptyProfile.appliedExternalAttributionProviders |
Установка
Установите версию adapty-bom 4.1.0 (или выше) и синхронизируйте проект. BOM автоматически подберёт совместимые версии android-sdk и android-ui. Инструкции по подключению зависимостей см. в разделе Установка Adapty SDK.
Если вы обновляетесь с версии 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
}