Миграция с Superwall
Большинство миграций с Superwall на Adapty занимают около двух часов. Вы заменяете SDK, направляете серверные уведомления стора на Adapty и выпускаете новую версию приложения. Ваши платные подписчики сохраняют доступ — Adapty восстановит его из чеков App Store и Google Play при первом запуске.
Ваши подписчики перейдут автоматически Все пользователи, когда-либо активировавшие подписку, переходят в Adapty, как только открывают новую версию вашего приложения с SDK Adapty. Статус подписки и доступ к премиуму восстанавливаются автоматически.
Структура этого гайда
Миграция состоит из шести шагов:
- Сопоставьте концепции Superwall с концепциями Adapty (5 минут)
- Установите Adapty SDK (15 минут)
- Замените вызовы SDK (1 час)
- Переключите серверные уведомления App Store и Google Play (5 минут)
- Протестируйте и выпустите релиз (30 минут)
- (Опционально) Импортируйте исторические данные
Соответствие концепций Superwall в Adapty
Большинство концепций Superwall имеют прямые аналоги в Adapty:
| Superwall | Adapty | Что меняется |
|---|---|---|
| Campaign | Плейсмент + Аудитория | Логика кампании делится на плейсмент (место) и аудиторию (правило). |
| Placement | Плейсмент | Та же концепция, то же название. |
| Audience filter | Аудитория | Наборы правил находятся внутри плейсмента. |
| Entitlement | Уровень доступа | Именованный идентификатор (например, premium). |
| WebView paywall | Пейвол на Paywall Builder | Рендерится SDK Adapty нативно вместо WKWebView. |
PurchaseController | Встроенный | Реализовывать протокол не нужно — покупками управляет Adapty. |
| Feature gating | Проверка уровня доступа | Проверьте profile.accessLevels["premium"]?.isActive. |
| Перед тем как приступить к коду, стоит отметить два важных изменения в подходе: |
- Получение и показ пейвола — отдельные шаги: У Superwall метод
registerполучает пейвол, оценивает кампанию и показывает UI за один вызов. Adapty разделяет эти шаги — вы отдельно получаете пейвол, его конфигурацию, а затем показываете его. Это добавляет несколько строк, зато позволяет предзагружать конфигурации, показывать кастомный индикатор загрузки или отменять показ на основе собственной логики. - Статус подписки привязан к уровню доступа: Superwall предоставляет единственное published-свойство
subscriptionStatus. Adapty возвращаетAdaptyProfileс именованными уровнями доступа, так что один пользователь может одновременно иметь уровни доступаsportsиscience. Для синхронного чтения кешируйте профиль изAdaptyDelegate, а не вызывайтеgetProfile()при каждой загрузке экрана.
Установите SDK
Установите SDK для вашей платформы — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity или Capacitor — и одновременно удалите SuperwallKit из своего проекта.
Замените вызовы SDK
Пройдитесь по каждой части вашей интеграции и замените вызовы Superwall на эквиваленты Adapty. Ссылки в конце каждого подраздела охватывают все семь платформенных SDK — переходите по той, которая соответствует вашему приложению.
Инициализация SDK
Замените Superwall.configure на Adapty.activate.
Ознакомьтесь с гайдом по установке для вашей платформы — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity или Capacitor.
Идентификация и выход пользователей
Замените Superwall.shared.identify на Adapty.identify, а Superwall.shared.reset — на Adapty.logout. Оба SDK создают анонимный профиль при первом запуске, поэтому эти вызовы нужны только при входе или выходе пользователя. После идентификации повторно запрашивайте пейволы — новый пользователь может попасть в другую аудиторию.
Смотрите гайд по идентификации для вашей платформы — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity или Capacitor.
Получение и отображение пейвола
Замените Superwall.shared.register двухшаговым процессом: получите пейвол с помощью Adapty.getPaywall, загрузите конфигурацию его представления через AdaptyUI.getPaywallConfiguration, а затем отобразите его.
Два важных отличия:
- Закрытие доступа к функциям заменяет замыкание
feature:: после закрытия пейвола проверьте активный уровень доступа в возвращённом профиле (или черезAdapty.getProfile) и разветвляйте логику оттуда. - Пейволы рендерит SDK: Superwall рендерит пейволы внутри
WKWebView. Adapty рендерит пейволы Paywall Builder нативно — шрифты, информация о продуктах и кнопки отрисовываются средствами SDK. Ознакомьтесь с гайдом по быстрому старту пейволов для вашей платформы — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity или Capacitor.
Проверка статуса подписки
Замените Superwall.shared.subscriptionStatus на проверку именованного уровня доступа в профиле: profile.accessLevels["premium"]?.isActive. Отслеживайте изменения через AdaptyDelegate.didLoadLatestProfile(_:) вместо паттерна @Published, а профиль кешируйте на своей стороне для синхронного чтения.
См. гайд по статусу подписки для вашей платформы — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity или Capacitor.
Обработка покупок и восстановлений
С Paywall Builder оба SDK обрабатывают покупки автоматически внутри UI пейвола — этот шаг можно пропустить.
Для кастомных пейволов Superwall требует реализации PurchaseController. Adapty — нет: замените PurchaseController.purchase на Adapty.makePurchase, а PurchaseController.restorePurchases — на Adapty.restorePurchases. SDK самостоятельно выполняет валидацию.
Смотрите гайд по custom paywall для вашей платформы — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity или Capacitor.
Установка атрибутов пользователя
Замените Superwall.shared.setUserAttributes на Adapty.updateProfile.
Ознакомьтесь с гайдом по атрибутам пользователя для вашей платформы — iOS, Android, React Native, Flutter, Kotlin Multiplatform, Unity или Capacitor.
Настройка серверных уведомлений App Store и Google Play
Направьте серверные уведомления стора в Adapty. Без них Adapty работает, но аналитика, сторонние интеграции и метрики A/B-тестов от них зависят:
- App Store: следуйте инструкции Включение серверных уведомлений App Store.
- Google Play: следуйте инструкции Включение уведомлений реального времени для разработчиков. Если вы хотите запускать Superwall и Adapty параллельно во время перехода, воспользуйтесь переадресацией необработанных событий — Adapty будет проксировать события стора обратно в Superwall, пока вы проверяете новую интеграцию.
Тестирование и релиз
Перед релизом проверьте каждый пункт:
- Настроен дашборд Adapty (продукты, пейволы, плейсменты, уровни доступа)
- Установлен SDK Adapty
- Вызовы Superwall SDK заменены на эквиваленты Adapty
- Серверные уведомления App Store и Google Play направлены на Adapty
- Выполнена покупка в песочнице
- Отправлен новый релиз приложения
Пройдите чеклист релиза для финальной проверки.
(Опционально) Импорт исторических данных
Superwall не владеет состоянием вашей подписки — это делают App Store и Google Play. Adapty проверяет чеки при первом запуске, поэтому платные пользователи сохраняют доступ без какого-либо импорта.
Если вы хотите, чтобы исторические транзакции попали в аналитику Adapty, следуйте гайду Импорт исторических данных в Adapty. Подождите не менее недели после релиза SDK, чтобы у него было время собрать актуальные данные о ценах покупок.
Часто задаваемые вопросы
Что происходит с подписчиками, которые не обновляют приложение?
Большинство пользователей обновляют приложения автоматически — как правило, ночью, поэтому доля пользователей на старой версии быстро сокращается. Подписчики на старой версии сохраняют доступ через App Store или Google Play напрямую — принудительное обновление не требуется.
Переносятся ли аудитории моих кампаний из Superwall?
Нет. Фильтры аудитории в Superwall и аудитории в Adapty настраиваются в разных дашбордах и используют разные идентификаторы. Воссоздайте таргетинг как аудитории внутри плейсментов Adapty. Большинство приложений работают с одним-двумя плейсментами (онбординг и общий внутриприложенческий триггер), поэтому перенастройка обычно занимает немного времени.
Есть ли в Adapty аналог getPresentationResult?
Нет единого вызова для этого. Чтобы проверить, будет ли плейсмент показывать пейвол, вызовите Adapty.getPaywall(placementId:) и обработайте результат. Если вызов успешен — пейвол назначен для аудитории этого пользователя. Если он завершился ошибкой из-за того, что пейвол не настроен — пропустите показ и выполните резервную логику.