Миграция с RevenueCat

Миграция состоит из 5 логических шагов и занимает в среднем 2 часа. 90% всех миграций укладываются менее чем в один рабочий день.

  1. Изучите ключевые отличия; создайте и настройте аккаунт Adapty (5 минут);
  2. Установите Adapty SDK для вашей платформы (iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity) вместо RevenueCat SDK (1 час);
  3. Настройте уведомления сервера Apple App Store для Adapty и (опционально) пересылку raw-событий (5 минут);
  4. Протестируйте и выпустите обновление приложения (30 минут);
  5. (Опционально) Запросите у поддержки RevenueCat исторические данные в формате CSV (5 минут);
  6. (Опционально) Импортируйте исторические данные через поддержку Adapty (30 минут).

Подписчики мигрируют автоматически

Все пользователи, когда-либо активировавшие подписку, автоматически появятся в Adapty, как только откроют новую версию приложения с Adapty SDK. Валидация статуса подписки и доступ к премиум-контенту будут восстановлены автоматически.

Перед выпуском новой версии приложения с Adapty SDK обязательно ознакомьтесь с нашим чеклистом перед релизом.

Изучите ключевые отличия; создайте и настройте аккаунт Adapty

SDK Adapty и RevenueCat устроены схожим образом. Главное отличие — в сетевом взаимодействии и скорости: Adapty SDK разработан так, чтобы как можно быстрее предоставлять информацию по запросу. Например, при запросе пейвола вы сначала получаете Remote Config для предварительной сборки онбординга или пейвола, а затем запрашиваете продукты отдельным запросом.

Терминология немного отличается:

RevenueCatAdapty
PackageProduct
OfferingPaywall
PaywallPaywall Builder
EntitlementAccess level

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

  • Онбординг (80% всех покупок происходит именно там);
  • Общий (показывается в настройках или внутри приложения после онбординга).
2406d97-image.webp

Установите Adapty SDK и замените RevenueCat SDK

Установите Adapty SDK для вашей платформы (iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity) в своём приложении.

Нужно заменить несколько методов SDK на стороне приложения. Разберём наиболее распространённые функции и то, как их заменить на методы Adapty SDK.

Активация SDK

Замените Purchases.configure на Adapty.activate.

Получение пейволов (офферингов)

Замените Purchases.shared.getOfferings на Adapty.getPaywall.

В Adapty пейвол всегда запрашивается через placement id. На практике вы запрашиваете не более 1–2 пейволов, поэтому мы намеренно сделали именно так — чтобы ускорить SDK и снизить сетевую нагрузку.

Получение профиля пользователя

Замените Purchases.shared.getCustomerInfo на Adapty.getProfile.

Получение продуктов

В RevenueCat используется следующая структура: Purchases.shared.getOfferings, затем self.offering?.availablePackages.

В Adapty вы сначала запрашиваете пейвол (см. выше), чтобы получить мгновенный доступ к Remote Config Adapty, а затем запрашиваете продукты через Adapty.getPaywallProducts.

Совершение покупки

Замените Purchases.shared.purchase на Adapty.makePurchase.

Проверка уровня доступа (entitlement)

Получите профиль пользователя (см. выше) и замените

customerInfo?.entitlements["premium"]?.isActive == true

на

profile.accessLevels["premium"]?.isActive == true.

Восстановление покупки

Замените Purchases.shared.restorePurchases на Adapty.restorePurchases.

Проверка авторизации пользователя

Замените Purchases.shared.isAnonymous на if profile.customerUserId == nil.

Вход пользователя

Замените Purchases.shared.logIn на Adapty.identify.

Выход пользователя

Замените Purchases.shared.logOut на Adapty.logout.

Переключите серверные уведомления App Store на Adapty

Как это сделать — читайте здесь.

Протестируйте и выпустите новую версию приложения

Если вы дошли до этого пункта, значит вы уже:

  • Настроили дашборд Adapty
  • Установили Adapty SDK
  • Заменили логику SDK на функции Adapty
  • Переключили серверные уведомления App Store на Adapty и при необходимости включили пересылку raw-событий в RevenueCat
  • Совершили покупку в песочнице
  • Выпустили новую версию приложения

Если все пункты выше отмечены, просто совершите тестовую покупку в песочнице, а затем выпустите приложение.

Пройдите чеклист перед релизом.

Выполните финальную проверку по нашему списку, чтобы убедиться в корректности интеграции или добавить дополнительные функции, например атрибуцию или интеграцию с аналитикой.

(Опционально) Экспортируйте исторические данные RevenueCat в формате CSV

Не торопитесь с импортом исторических данных

Подождите не менее недели после релиза с SDK, прежде чем импортировать исторические данные. За это время мы получим из SDK информацию о ценах покупок, и импортируемые данные станут более актуальными.

Экспортируйте исторические данные из RevenueCat в формате CSV, следуя инструкциям в официальной документации RevenueCat.

(Опционально) Запросите у поддержки RevenueCat токены Google Purchase Tokens

Если вам нужно импортировать транзакции Google Play, обратитесь в поддержку RevenueCat через их страницу поддержки и запросите CSV-файл с Google Purchase Tokens. Google Purchase Token — это уникальный идентификатор, предоставляемый Google Play для каждой транзакции; он необходим для точного отслеживания и верификации покупок в Adapty. Эта информация не включается в стандартный экспортный файл. Файл содержит три столбца:

  • user_id
  • google_purchase_token
  • google_product_id

Напишите нам для импорта исторических данных

Свяжитесь с нами через мессенджер на сайте или по электронной почте [email protected], прикрепив ваши CSV-файлы.

  1. Отправьте CSV-файл, экспортированный из RevenueCat, напрямую в нашу службу поддержки.
  2. Если вы импортируете транзакции Google Play, приложите CSV-файл с Google Purchase Tokens, полученный от поддержки RevenueCat.
  3. Укажите, какой идентификатор пользователя следует использовать в качестве Customer User ID (основного идентификатора пользователя в Adapty): rc_original_app_user_id или rc_last_seen_app_user_id_alias.

Наша команда поддержки импортирует ваши транзакции в Adapty. Для каждой транзакции будут импортированы следующие данные:

ПараметрОписание
user_idCustomer User ID — основной идентификатор пользователя в Adapty и вашей системе.
apple_original_transaction_idДля цепочек подписок — это дата покупки исходной транзакции, связанная через store_original_transaction_id.
google_product_idИдентификатор продукта в Google Play Store.
google_purchase_tokenУникальный идентификатор, предоставляемый Google Play для каждой транзакции; необходим для валидации.
countryСтрана пользователя.
created_atДата и время создания пользователя.
subscription_expiration_dateДата и время окончания подписки.
emailEmail конечного пользователя.
phone_numberНомер телефона конечного пользователя.
idfaIdentifier for Advertisers (IDFA) — идентификатор устройства пользователя, присваиваемый Apple.
idfvIdentifier for Vendors (IDFV) — код, присваиваемый всем приложениям одного разработчика и используемый совместно на одном устройстве.
advertising_idУникальный идентификатор, предоставляемый ОС Android и используемый рекламодателями для отслеживания.
attribution_channelНазвание маркетингового канала.
attribution_campaignНазвание маркетинговой кампании.
attribution_ad_groupГруппа объявлений атрибуции.
attribution_ad_setНабор объявлений атрибуции.
attribution_creativeКлючевое слово креатива атрибуции.

Кроме того, будут импортированы идентификаторы интеграций для следующих сервисов: Amplitude, Mixpanel, AppsFlyer, Adjust и FacebookAds.

FAQ

Я успешно установил Adapty SDK и выпустил новую версию приложения. Что произойдёт с моими действующими подписчиками, которые не обновили приложение до версии с Adapty SDK?

Большинство пользователей заряжают телефоны на ночь — именно тогда App Store обычно автоматически обновляет все приложения, так что это не должно стать проблемой. Небольшое количество платных подписчиков всё же может не обновиться, но они по-прежнему сохранят доступ к премиум-контенту. Беспокоиться об этом не нужно, и принудительно заставлять их обновляться тоже.

Нужно ли мне как можно скорее экспортировать исторические данные из RevenueCat, или я рискую их потерять?

Торопиться не нужно: сначала выпустите приложение с Adapty SDK, а потом передайте нам исторические данные. Мы восстановим историю платежей ваших пользователей и заполним профили и графики.

Я использую MMP (AppsFlyer, Adjust и др.) и аналитику (Mixpanel, Amplitude и др.). Как убедиться, что всё будет работать?

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