Миграция с RevenueCat
Миграция состоит из 5 логических шагов и занимает в среднем 2 часа. 90% всех миграций укладываются менее чем в один рабочий день.
- Изучите ключевые отличия; создайте и настройте аккаунт Adapty (5 минут);
- Установите Adapty SDK для вашей платформы (iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity) вместо RevenueCat SDK (1 час);
- Настройте уведомления сервера Apple App Store для Adapty и (опционально) пересылку raw-событий (5 минут);
- Протестируйте и выпустите обновление приложения (30 минут);
- (Опционально) Запросите у поддержки RevenueCat исторические данные в формате CSV (5 минут);
- (Опционально) Импортируйте исторические данные через поддержку Adapty (30 минут).
Подписчики мигрируют автоматически
Все пользователи, когда-либо активировавшие подписку, автоматически появятся в Adapty, как только откроют новую версию приложения с Adapty SDK. Валидация статуса подписки и доступ к премиум-контенту будут восстановлены автоматически.
Перед выпуском новой версии приложения с Adapty SDK обязательно ознакомьтесь с нашим чеклистом перед релизом.
Изучите ключевые отличия; создайте и настройте аккаунт Adapty
SDK Adapty и RevenueCat устроены схожим образом. Главное отличие — в сетевом взаимодействии и скорости: Adapty SDK разработан так, чтобы как можно быстрее предоставлять информацию по запросу. Например, при запросе пейвола вы сначала получаете Remote Config для предварительной сборки онбординга или пейвола, а затем запрашиваете продукты отдельным запросом.
Терминология немного отличается:
| RevenueCat | Adapty |
|---|---|
| Package | Product |
| Offering | Paywall |
| Paywall | Paywall Builder |
| Entitlement | Access level |
В Adapty есть концепция плейсмента. Это логическое место внутри приложения, где пользователь может совершить покупку. В большинстве случаев плейсментов один или два:
- Онбординг (80% всех покупок происходит именно там);
- Общий (показывается в настройках или внутри приложения после онбординга).
Установите 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_idgoogle_purchase_tokengoogle_product_id
Напишите нам для импорта исторических данных
Свяжитесь с нами через мессенджер на сайте или по электронной почте [email protected], прикрепив ваши CSV-файлы.
- Отправьте CSV-файл, экспортированный из RevenueCat, напрямую в нашу службу поддержки.
- Если вы импортируете транзакции Google Play, приложите CSV-файл с Google Purchase Tokens, полученный от поддержки RevenueCat.
- Укажите, какой идентификатор пользователя следует использовать в качестве Customer User ID (основного идентификатора пользователя в Adapty):
rc_original_app_user_idилиrc_last_seen_app_user_id_alias.
Наша команда поддержки импортирует ваши транзакции в Adapty. Для каждой транзакции будут импортированы следующие данные:
| Параметр | Описание |
|---|---|
| user_id | Customer 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 | Дата и время окончания подписки. |
| Email конечного пользователя. | |
| phone_number | Номер телефона конечного пользователя. |
| idfa | Identifier for Advertisers (IDFA) — идентификатор устройства пользователя, присваиваемый Apple. |
| idfv | Identifier 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.