Отображение флоу и пейволов — iOS
Если вы создали флоу или пейвол, вам не нужно беспокоиться об их отрисовке в коде мобильного приложения — всё, что должно быть показано и как именно, уже содержится внутри самого флоу или пейвола.
Чтобы получить объект AdaptyUI.FlowConfiguration, используемый ниже, см. Получение флоу и пейволов.
Отображение флоу и пейволов в SwiftUI
Отображение в виде модального окна
Чтобы отобразить флоу или пейвол на экране устройства в виде модального окна, используйте модификатор .flow в SwiftUI. Минимальный вызов требует isPresented, flowConfiguration и пяти обязательных колбэков:
.flow(
isPresented: $flowPresented,
flowConfiguration: <AdaptyUI.FlowConfiguration>,
didFinishPurchase: { _, _ in /* dismiss, or do nothing to let the flow continue */ },
didFailPurchase: { _, _ in /* handle the error */ },
didFinishRestore: { _ in /* check access level and dismiss */ },
didFailRestore: { _ in /* handle the error */ },
didReceiveError: { _ in flowPresented = false }
)Для более тонкого управления добавьте необязательные колбэки, например didPerformAction, для обработки нажатий на кнопки:
@State var flowPresented = false // ensure that you manage this variable state and set it to `true` at the moment you want to show the flow or paywall
var body: some View {
Text("Hello, AdaptyUI!")
.flow(
isPresented: $flowPresented,
flowConfiguration: <AdaptyUI.FlowConfiguration>,
didPerformAction: { action in
switch action {
case .close:
flowPresented = false
default:
// Handle other actions
break
}
},
didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
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 }
)
}Parameters:
| Параметр | Обязательный | Описание |
|---|---|---|
| isPresented | обязательный | Привязка, управляющая отображением флоу или пейвола. |
| flowConfiguration | обязательный | Объект AdaptyUI.FlowConfiguration, содержащий визуальные данные флоу или пейвола. Используйте метод AdaptyUI.getFlowConfiguration(forFlow:). Подробнее см. в разделе Получение флоу и пейволов. |
| didFinishPurchase | обязательный | Вызывается при успешном завершении Adapty.makePurchase(). Флоу не закрывается автоматически — здесь нужно установить привязку представления в false или оставить всё как есть, чтобы флоу продолжил работу после покупки. |
| didFailPurchase | обязательный | Вызывается при ошибке Adapty.makePurchase(). |
| didFinishRestore | обязательный | Вызывается при успешном завершении Adapty.restorePurchases(). |
| didFailRestore | обязательный | Вызывается при ошибке Adapty.restorePurchases(). |
| didReceiveError | обязательный | Вызывается при ошибке рендеринга или ошибке выполнения в скрипте флоу (например, исключение JavaScript, код AdaptyUIError 4105). При ошибках рендеринга обратитесь в поддержку Adapty. |
| fullScreen | необязательный | Определяет, отображается ли флоу или пейвол в полноэкранном режиме или как sheet. По умолчанию true. |
| didAppear | необязательный | Вызывается, когда флоу или пейвол был показан. |
| didDisappear | необязательный | Вызывается, когда флоу или пейвол был закрыт. |
| didPerformAction | необязательный | Вызывается при нажатии пользователем на кнопку. Два идентификатора действий предопределены: close и openURL; остальные задаются в билдере. |
| didSelectProduct | необязательный | Вызывается, когда пользователь или система выбирает продукт для покупки. |
| didStartPurchase | необязательный | Вызывается, когда пользователь начинает процесс покупки. |
| didFinishWebPaymentNavigation | необязательный | Вызывается по завершении навигации при веб-оплате. |
| didStartRestore | необязательный | Вызывается, когда пользователь начинает процесс восстановления покупок. |
| didFailLoadingProducts | необязательный | Вызывается при ошибках загрузки продуктов. Верните true, чтобы повторить загрузку. |
| didPartiallyLoadProducts | необязательный | Вызывается при частичной загрузке продуктов. |
| showAlertItem | необязательный | Привязка, управляющая отображением элементов предупреждения поверх флоу или пейвола. |
| showAlertBuilder | необязательный | Функция для рендеринга представления предупреждения. |
| placeholderBuilder | необязательный | Функция для рендеринга placeholder-представления во время загрузки флоу или пейвола. По умолчанию используется ProgressView. |
| Подробнее о параметрах см. в разделе iOS — Обработка событий. |
Представление в виде немодального окна
Вы также можете представлять флоу и пейволы как пункты навигации или встроенные представления в навигационном флоу вашего приложения. Используйте AdaptyFlowView непосредственно в SwiftUI-представлениях:
AdaptyFlowView(
flowConfiguration: <AdaptyUI.FlowConfiguration>,
didFinishPurchase: { product, purchaseResult in
// Dismiss the view, or do nothing to let the flow continue
},
didFailPurchase: { product, error in
// Handle purchase failure
},
didFinishRestore: { profile in
// Handle successful restore
},
didFailRestore: { error in
// Handle restore failure
},
didReceiveError: { error in
// Handle the error (rendering or JS exception from the flow script).
}
)Отображение флоу и пейволов в UIKit
Чтобы отобразить флоу или пейвол на экране устройства, выполните следующие шаги:
-
Инициализируйте визуальный флоу, который хотите отобразить, с помощью метода
AdaptyUI.flowController(with:delegate:):import AdaptyUI let visualFlow = try AdaptyUI.flowController( with: <AdaptyUI.FlowConfiguration>, delegate: <AdaptyFlowControllerDelegate> )Параметры запроса:
Параметр Обязательный Описание flowConfiguration required Объект AdaptyUI.FlowConfiguration, содержащий визуальные детали флоу или пейвола. Используйте методAdaptyUI.getFlowConfiguration(forFlow:). Подробнее — в разделе Получение флоу и пейволов.delegate required AdaptyFlowControllerDelegateдля прослушивания событий флоу и пейвола. Подробнее — в разделе Обработка событий флоу и пейвола.Возвращает:
Объект Описание AdaptyFlowController Объект, представляющий запрошенный флоу или экран пейвола. -
После того как объект успешно создан, его можно отобразить на экране устройства:
present(visualFlow, animated: true)
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Ознакомьтесь с нашими примерами приложений, которые демонстрируют полную настройку: отображение пейволов, совершение покупок и другой базовый функционал.
Если вы настроили пейвол с помощью Paywall Builder, вам не нужно беспокоиться о его рендеринге в коде мобильного приложения для отображения пользователю. Такой пейвол содержит как то, что должно быть показано, так и то, как именно это должно отображаться.
Чтобы получить объект AdaptyUI.PaywallConfiguration, используемый ниже, см. раздел Получение пейволов Paywall Builder и их конфигурации.
Отображение пейволов в SwiftUI
Отображение в виде модального окна
Чтобы отобразить визуальный пейвол на экране устройства в виде модального окна, используйте модификатор .paywall в SwiftUI:
@State var paywallPresented = false // ensure that you manage this variable state and set it to `true` at the moment you want to show the paywall
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishPurchase: { product, profile in paywallPresented = false },
didFailPurchase: { product, error in /* handle the error */ },
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false }
)
}Parameters:
| Параметр | Обязателен | Описание |
|---|---|---|
| isPresented | обязателен | Биндинг, управляющий отображением экрана пейвола. |
| paywallConfiguration | обязателен | Объект AdaptyUI.PaywallConfiguration, содержащий визуальные параметры пейвола. Используйте метод AdaptyUI.paywallConfiguration(for:products:viewConfiguration:observerModeResolver:tagResolver:timerResolver:). Подробнее см. в разделе Получение пейволов Paywall Builder и их конфигурации. |
| didFailPurchase | обязателен | Вызывается при ошибке Adapty.makePurchase(). |
| didFinishRestore | обязателен | Вызывается при успешном завершении Adapty.restorePurchases(). |
| didFailRestore | обязателен | Вызывается при ошибке Adapty.restorePurchases(). |
| didFailRendering | обязателен | Вызывается при ошибке рендеринга интерфейса. В этом случае обратитесь в поддержку Adapty. |
| fullScreen | опционален | Определяет, отображается ли пейвол в полноэкранном режиме или как модальное окно. По умолчанию true. |
| didAppear | опционален | Вызывается, когда представление пейвола было показано. |
| didDisappear | опционален | Вызывается, когда представление пейвола было скрыто. |
| didPerformAction | опционален | Вызывается при нажатии пользователем кнопки. У разных кнопок разные идентификаторы действий. Два идентификатора заданы заранее: close и openURL; остальные — пользовательские и задаются в билдере. |
| didSelectProduct | опционален | Вызывается, если продукт был выбран для покупки (пользователем или системой). |
| didStartPurchase | опционален | Вызывается, когда пользователь начинает процесс покупки. |
| didFinishPurchase | опционален | Вызывается при успешном завершении Adapty.makePurchase(). |
| didFinishWebPaymentNavigation | опционален | Вызывается при завершении навигации веб-платежа. |
| didStartRestore | опционален | Вызывается, когда пользователь начинает процесс восстановления покупок. |
| didFailLoadingProducts | опционален | Вызывается при ошибках загрузки продуктов. Верните true, чтобы повторить загрузку. |
| didPartiallyLoadProducts | опционален | Вызывается, когда продукты загружены частично. |
| showAlertItem | опционален | Биндинг, управляющий отображением элементов алерта поверх пейвола. |
| showAlertBuilder | опционален | Функция для рендеринга представления алерта. |
| placeholderBuilder | опционален | Функция для рендеринга представления-заглушки, пока пейвол загружается. |
| Подробнее о параметрах см. в разделе iOS — Обработка событий. |
Отображение в виде немодального представления
Пейволы также можно встраивать как навигационные экраны или встроенные представления в навигационный флоу вашего приложения. Используйте AdaptyPaywallView напрямую в SwiftUI-представлениях:
AdaptyPaywallView(
paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
didFailPurchase: { product, error in
// Handle purchase failure
},
didFinishRestore: { profile in
// Handle successful restore
},
didFailRestore: { error in
// Handle restore failure
},
didFailRendering: { error in
// Handle rendering error
}
)Отображение пейволов в UIKit
Чтобы отобразить визуальный пейвол на экране устройства, выполните следующие шаги:
-
Инициализируйте визуальный пейвол, который хотите отобразить, с помощью метода
.paywallController(for:products:viewConfiguration:delegate:):import AdaptyUI let visualPaywall = AdaptyUI.paywallController( with: <paywall configuration object>, delegate: <AdaptyPaywallControllerDelegate> )Параметры запроса:
Параметр Наличие Описание paywall configuration required Объект AdaptyUI.PaywallConfiguration, содержащий визуальные детали пейвола. Используйте методAdaptyUI.getPaywallConfiguration(forPaywall:locale:). Подробнее см. в разделе Получение пейволов Paywall Builder и их конфигурации.delegate required AdaptyPaywallControllerDelegateдля обработки событий пейвола. Подробнее см. в разделе Обработка событий пейвола.
Возвращает:
| Объект | Описание |
|---|---|
| AdaptyPaywallController | Объект, представляющий запрошенный экран пейвола |
-
После успешного создания объекта его можно отобразить на экране устройства:
present(visualPaywall, animated: true)
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку, включая отображение пейволов, совершение покупок и другие базовые функции.