Миграция с Superwall

Большинство миграций с Superwall на Adapty занимают около двух часов. Вы заменяете SDK, направляете серверные уведомления стора на Adapty и выпускаете новую версию приложения. Ваши платные подписчики сохраняют доступ — Adapty восстановит его из чеков App Store и Google Play при первом запуске.

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

Структура этого гайда

Миграция состоит из шести шагов:

  1. Сопоставьте концепции Superwall с концепциями Adapty (5 минут)
  2. Установите Adapty SDK (15 минут)
  3. Замените вызовы SDK (1 час)
  4. Переключите серверные уведомления App Store и Google Play (5 минут)
  5. Протестируйте и выпустите релиз (30 минут)
  6. (Опционально) Импортируйте исторические данные

Соответствие концепций Superwall в Adapty

Большинство концепций Superwall имеют прямые аналоги в Adapty:

SuperwallAdaptyЧто меняется
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-тестов от них зависят:

Тестирование и релиз

Перед релизом проверьте каждый пункт:

  • Настроен дашборд 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:) и обработайте результат. Если вызов успешен — пейвол назначен для аудитории этого пользователя. Если он завершился ошибкой из-за того, что пейвол не настроен — пропустите показ и выполните резервную логику.