Скиллы покрывают интеграцию SDK, создание flow и paywall, проверку перед публикацией, миграцию placement и многое другое. Опишите задачу обычными словами — агент сам выберет нужный скилл.
Чтобы подключить встроенные покупки, нужно разобраться в трёх ключевых концепциях:
Продукты – всё, что пользователи могут купить (подписки, расходуемые покупки, пожизненный доступ)
Флоу и пейволы – экраны, которые представляют продукты пользователям, созданные в no-code конструкторе Flow & Paywall Builder. SDK получает их через getFlow. Если вы предпочитаете строить UI в собственном коде, см. Реализация пользовательских пейволов.
Плейсменты – где и когда вы показываете флоу и пейволы в приложении (например, main, onboarding, settings). Вы привязываете их к плейсментам в дашборде, а затем запрашиваете по ID плейсмента в коде. Это позволяет легко запускать A/B-тесты и показывать разные варианты разным пользователям.
Adapty предлагает три способа подключить покупки в вашем приложении. Выберите подходящий в зависимости от требований:
Вы реализуете UI пейвола в коде приложения, но всё равно получаете объект флоу из Adapty, сохраняя гибкость в управлении продуктами. См. гайд.
Режим наблюдателя
🔴 Сложно
У вас уже есть собственная инфраструктура обработки покупок, и вы хотите продолжать её использовать. Обратите внимание, что режим наблюдателя имеет ограничения в Adapty. См. статью.
Important
Шаги ниже показывают, как реализовать флоу или пейвол, созданный в Adapty Flow & Paywall Builder.
Чтобы отобразить флоу или пейвол, созданный в Adapty Flow & Paywall Builder, в коде вашего приложения нужно лишь:
Получите флоу или пейвол: Запросите его из Adapty.
Отобразите его — Adapty обработает покупки за вас: Покажите экран в приложении.
Обработайте действия кнопок: Свяжите действия пользователей с реакцией приложения. Например, открывайте ссылки или закрывайте пейвол при нажатии кнопок.
Ваши флоу и пейволы привязаны к плейсментам, настроенным в дашборде. Плейсменты позволяют показывать разные флоу или пейволы разным аудиториям или запускать A/B-тесты.
Чтобы получить флоу или пейвол, созданный в Adapty Flow & Paywall Builder, нужно:
Получить объект flow по ID плейсмента с помощью метода getFlow и проверить, есть ли у него конфигурация отображения.
Получить конфигурацию отображения с помощью метода getFlowConfiguration. Она содержит элементы UI и стили, необходимые для отображения.
func loadFlow() async { let flow = try await Adapty.getFlow(placementId: "YOUR_PLACEMENT_ID") guard flow.hasViewConfiguration else { print("Flow doesn't have a view configuration") return } flowConfiguration = try await AdaptyUI.getFlowConfiguration(forFlow: flow)}
2. Отображение флоу или пейвола
Когда у вас есть конфигурация флоу, достаточно добавить несколько строк, чтобы отобразить флоу или пейвол.
В SwiftUI при отображении флоу также необходимо обрабатывать события. didFinishPurchase, didFailPurchase, didFinishRestore, didFailRestore и didReceiveError являются обязательными. При тестировании можно просто скопировать код из фрагмента ниже, чтобы логировать эти события.
Tip
Флоу не закрывается автоматически после успешной покупки. В didFinishPurchase установите для привязки презентации значение false, чтобы закрыть его, или ничего не делайте, чтобы флоу перешёл к следующим экранам.
.flow( isPresented: $flowPresented, flowConfiguration: flowConfiguration, didFinishPurchase: { product, purchaseResult in print("Purchase finished successfully") flowPresented = false // or do nothing to let the flow continue }, didFailPurchase: { product, error in print("Purchase failed: \(error)") }, didFinishRestore: { profile in print("Restore finished successfully") }, didFailRestore: { error in print("Restore failed: \(error)") }, didReceiveError: { error in flowPresented = false print("Flow error: \(error)") })
Реализуйте AdaptyFlowControllerDelegate для обработки событий. Как минимум, реализуйте четыре метода, у которых нет реализации по умолчанию. Обратите внимание, что контроллер не закрывает себя после успешной покупки — закройте его в didFinishPurchase или ничего не делайте, чтобы флоу продолжил переход к следующим экранам:
Подробнее о том, как отображать флоу или пейвол, см. в нашем гайде.
3. Обработка действий кнопок
Когда пользователи нажимают кнопки, iOS SDK автоматически обрабатывает покупки, восстановление, закрытие экрана и открытие ссылок.
Однако другие кнопки имеют пользовательские или предопределённые идентификаторы и требуют обработки действий в вашем коде. Или вы можете захотеть переопределить их поведение по умолчанию.
Например, вот как обработать кнопку закрытия. В UIKit SDK автоматически закрывает контроллер при срабатывании .close — переопределяйте только если нужно особое поведение. В SwiftUI вы должны самостоятельно установить привязку isPresented в false.
Tip
Читайте наши гайды о том, как обрабатывать действия кнопок и события.
.flow( isPresented: $flowPresented, flowConfiguration: flowConfiguration, didPerformAction: { action in switch action { case .close: flowPresented = false // dismiss the flow when the user taps close default: break } }, didFinishPurchase: { product, purchaseResult in flowPresented = false }, didFailPurchase: { product, error in /* handle the error */ }, didFinishRestore: { profile in /* check access level and dismiss */ }, didFailRestore: { error in /* handle the error */ }, didReceiveError: { error in flowPresented = false })
Есть вопросы или возникли проблемы? Загляните на наш форум поддержки, где можно найти ответы на распространённые вопросы или задать свой. Наша команда и сообщество всегда готовы помочь!