Отображение пейволов Paywall Builder в режиме Observer в iOS SDK
Если вы настроили пейвол с помощью Paywall Builder, вам не нужно беспокоиться о его отображении в коде мобильного приложения. Такой пейвол содержит как то, что должно отображаться, так и то, как именно это должно выглядеть.
Этот раздел относится только к режиму Observer. Если вы не работаете в режиме Observer, обратитесь к разделу iOS — показ пейволов в Paywall Builder.
Перед тем как показывать пейволы (нажмите, чтобы развернуть)
- Настройте начальную интеграцию Adapty с Google Play и с App Store.
2. Установите и настройте Adapty SDK. Убедитесь, что параметр
observerModeустановлен вtrue. Обратитесь к нашим инструкциям для конкретных фреймворков: iOS. 3. Создайте продукты в дашборде Adapty. 4. Настройте пейволы, назначьте на них продукты и кастомизируйте их с помощью Paywall Builder в дашборде Adapty. 5. Создайте плейсменты и назначьте на них пейволы в дашборде Adapty. 6. Получите пейволы Paywall Builder и их конфигурацию в коде мобильного приложения.
-
Реализуйте объект
AdaptyObserverModeResolver:func observerMode(didInitiatePurchase product: AdaptyPaywallProduct, onStartPurchase: @escaping () -> Void, onFinishPurchase: @escaping () -> Void) { // use the product object to handle the purchase // use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase }
The observerMode(didInitiatePurchase:onStartPurchase:onFinishPurchase:) event will inform you that the user has initiated a purchase. You can trigger your custom purchase flow in response to this callback.
observerModeDidInitiateRestorePurchases(onStartRestore:onFinishRestore:) уведомит вас о том, что пользователь инициировал восстановление покупок. В ответ на этот колбэк вы можете запустить собственный процесс восстановления.
Также не забудьте вызвать следующие колбэки, чтобы уведомить AdaptyUI о ходе покупки или восстановления. Это необходимо для корректного поведения пейвола — например, для отображения загрузчика:
| Callback | Описание |
|---|---|
| onStartPurchase() | Колбэк следует вызывать, чтобы уведомить AdaptyUI о начале покупки. |
| onFinishPurchase() | Колбэк следует вызывать, чтобы уведомить AdaptyUI о завершении покупки. |
| onStartRestore() | Колбэк следует вызывать, чтобы уведомить AdaptyUI о начале восстановления покупок. |
| onFinishRestore() | Колбэк следует вызывать, чтобы уведомить AdaptyUI о завершении восстановления покупок. |
-
Создайте объект конфигурации пейвола:
do { let paywallConfiguration = try AdaptyUI.getPaywallConfiguration( forPaywall: <paywall object>, observerModeResolver: <AdaptyObserverModeResolver> ) } catch { // handle the error }Параметры запроса:
Параметр Наличие Описание Paywall обязательный Объект AdaptyPaywallдля получения контроллера нужного пейвола.ObserverModeResolver обязательный Объект AdaptyObserverModeResolver, реализованный на предыдущем шаге. -
Инициализируйте визуальный пейвол, который хотите отобразить, с помощью метода
.paywallController(for:products:viewConfiguration:delegate:):import Adapty import AdaptyUI let visualPaywall = AdaptyUI.paywallController( with: <paywall configuration object>, delegate: <AdaptyPaywallControllerDelegate> )
Параметры запроса:
| Параметр | Обязательность | Описание |
|---|---|---|
| Paywall Configuration | обязательный | Объект AdaptyUI.PaywallConfiguration, содержащий визуальные детали пейвола. Используйте метод AdaptyUI.getPaywallConfiguration(forPaywall:locale:). Подробнее см. в разделе Получение пейволов Paywall Builder и их конфигурации. |
| Delegate | обязательный | AdaptyPaywallControllerDelegate для прослушивания событий пейвола. Подробнее см. в разделе Обработка событий пейвола. |
| Возвращает: |
| Объект | Описание |
|---|---|
| AdaptyPaywallController | Объект, представляющий запрошенный экран пейвола |
После успешного создания объекта его можно отобразить следующим образом:
present(visualPaywall, animated: true)Не забудьте связать пейволы с транзакциями покупок. Иначе Adapty не сможет определить, из какого пейвола была совершена покупка.
Чтобы отобразить визуальный пейвол на экране устройства, используйте модификатор .paywall в SwiftUI:
@State var paywallPresented = false
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywallConfiguration: <paywall configuration object>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false }
)
}
| Параметр | Наличие | Описание |
|---|---|---|
| Paywall Configuration | обязательный | Объект AdaptyUI.PaywallConfiguration, содержащий визуальные детали пейвола. Используйте метод AdaptyUI.getPaywallConfiguration(forPaywall:locale:). Подробнее см. в разделе Получение пейволов Paywall Builder и их конфигурации. |
| Products | опциональный | Передайте массив AdaptyPaywallProducts, чтобы оптимизировать время отображения продуктов на экране. Если передать nil, AdaptyUI автоматически загрузит необходимые продукты. |
| TagResolver | опциональный | Задайте словарь пользовательских тегов и их значений. Пользовательские теги служат плейсхолдерами в содержимом пейвола и динамически заменяются конкретными строками для персонализации контента. Подробнее см. в разделе Пользовательские теги в Paywall Builder. |
| ObserverModeResolver | опциональный | Объект AdaptyObserverModeResolver, реализованный на предыдущем шаге. |
| Параметры замыкания: |
| Параметр замыкания | Описание |
|---|---|
| didFinishRestore | Вызывается, если Adapty.restorePurchases() выполнился успешно. |
| didFailRestore | Вызывается, если Adapty.restorePurchases() завершился с ошибкой. |
| didFailRendering | Вызывается, если в процессе отрисовки интерфейса произошла ошибка. |
| Обратитесь к разделу iOS — Обработка событий для ознакомления с другими параметрами замыканий. |
Не забудьте привязать пейволы к транзакциям покупок. Иначе Adapty не сможет определить, с какого пейвола была совершена покупка.
Перед тем как начать показывать пейволы (нажмите, чтобы развернуть)
- Настройте начальную интеграцию Adapty с Google Play и с App Store.
- Установите и настройте Adapty SDK. Убедитесь, что параметр
observerModeустановлен вtrue. Обратитесь к нашим инструкциям для iOS, React Native, Flutter и Unity. - Создайте продукты в дашборде Adapty.
- Настройте пейволы, назначьте на них продукты и кастомизируйте их с помощью Paywall Builder в дашборде Adapty.
- Создайте плейсменты и назначьте пейволы на них в дашборде Adapty.
- Получите пейволы Paywall Builder и их конфигурацию в коде вашего мобильного приложения.
- Реализуйте объект
AdaptyObserverModeDelegate:
func paywallController(_ controller: AdaptyPaywallController,
didInitiatePurchase product: AdaptyPaywallProduct,
onStartPurchase: @escaping () -> Void,
onFinishPurchase: @escaping () -> Void) {
// use the product object to handle the purchase
// use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase
}paywallController(_:didInitiatePurchase:onStartPurchase:onFinishPurchase:) уведомит вас о том, что пользователь инициировал покупку. В ответ на это событие вы можете запустить свой кастомный флоу покупки.
Также не забудьте вызвать следующие колбэки, чтобы уведомить AdaptyUI о процессе покупки. Это необходимо для корректного поведения пейвола — например, для отображения лоадера:
| Колбэк | Описание |
|---|---|
| onStartPurchase | Колбэк вызывается, чтобы уведомить AdaptyUI о начале покупки. |
| onFinishPurchase | Колбэк вызывается, чтобы уведомить AdaptyUI о завершении покупки. |
- Инициализируйте визуальный пейвол, который хотите отобразить, с помощью метода
.paywallController(for:products:viewConfiguration:delegate:observerModeDelegate:):
let visualPaywall = AdaptyUI.paywallController(
for: <paywall object>,
products: <paywall products array>,
viewConfiguration: <LocalizedViewConfiguration>,
delegate: <AdaptyPaywallControllerDelegate>
observerModeDelegate: <AdaptyObserverModeDelegate>
)Параметры запроса:
| Параметр | Обязательность | Описание |
|---|---|---|
| Paywall | обязательный | Объект AdaptyPaywall для получения контроллера нужного пейвола. |
| Products | необязательный | Передайте массив AdaptyPaywallProducts, чтобы оптимизировать время отображения продуктов на экране. Если передать nil, AdaptyUI автоматически загрузит необходимые продукты. |
| ViewConfiguration | обязательный | Объект AdaptyUI.LocalizedViewConfiguration, содержащий визуальные настройки пейвола. Используйте метод AdaptyUI.getViewConfiguration(paywall:locale:). Подробнее см. в разделе Получение пейволов Paywall Builder и их конфигурации. |
| Delegate | обязательный | Объект AdaptyPaywallControllerDelegate для обработки событий пейвола. Подробнее см. в разделе Обработка событий пейвола. |
| ObserverModeDelegate | обязательный | Объект AdaptyObserverModeDelegate, реализованный на предыдущем шаге. |
| TagResolver | необязательный | Задайте словарь пользовательских тегов и их значений. Пользовательские теги служат плейсхолдерами в контенте пейвола и динамически заменяются конкретными строками для персонализации. Подробнее см. в разделе Пользовательские теги в Paywall Builder. |
| Возвращает: |
| Объект | Описание |
|---|---|
| AdaptyPaywallController | Объект, представляющий запрошенный экран пейвола |
После успешного создания объекта его можно отобразить следующим образом:
present(visualPaywall, animated: true)Не забудьте связать пейволы с транзакциями покупок. Иначе Adapty не сможет определить, из какого пейвола была совершена покупка.
Чтобы отобразить визуальный пейвол на экране устройства, используйте модификатор .paywall в SwiftUI:
@State var paywallPresented = false
var body: some View {
Text("Hello, AdaptyUI!")
.paywall(
isPresented: $paywallPresented,
paywall: <paywall object>,
configuration: <LocalizedViewConfiguration>,
didPerformAction: { action in
switch action {
case .close:
paywallPresented = false
default:
// Handle other actions
break
}
},
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in paywallPresented = false },
observerModeDidInitiatePurchase: { product, onStartPurchase, onFinishPurchase in
// use the product object to handle the purchase
// use the onStartPurchase and onFinishPurchase callbacks to notify AdaptyUI about the process of the purchase
},
)
}Параметры запроса:
| Параметр | Обязательность | Описание |
|---|---|---|
| Paywall | обязательный | Объект AdaptyPaywall для получения контроллера нужного пейвола. |
| Product | необязательный | Передайте массив AdaptyPaywallProducts, чтобы оптимизировать время отображения продуктов на экране. Если передан nil, AdaptyUI автоматически загрузит необходимые продукты. |
| Configuration | обязательный | Объект AdaptyUI.LocalizedViewConfiguration, содержащий визуальные параметры пейвола. Используйте метод AdaptyUI.getViewConfiguration(paywall:locale:). Подробнее см. в разделе Получение пейволов Paywall Builder и их конфигурации. |
| TagResolver | необязательный | Задайте словарь пользовательских тегов и их значений. Пользовательские теги служат плейсхолдерами в содержимом пейвола и динамически заменяются конкретными строками для персонализации контента. Подробнее см. в разделе Пользовательские теги в Paywall Builder. |
| Closure parameters: | ||
| Параметр closure | Описание | |
| :---------------------------------- | :------------------------------------------------------------------------------------------------ | |
| didFinishRestore | Вызывается, если Adapty.restorePurchases() завершился успешно. | |
| didFailRestore | Вызывается, если Adapty.restorePurchases() завершился с ошибкой. | |
| didFailRendering | Вызывается, если в процессе отрисовки интерфейса произошла ошибка. | |
| observerModeDidInitiatePurchase | Вызывается, когда пользователь инициирует покупку. | |
| Обратитесь к разделу iOS — Обработка событий для получения информации о других параметрах замыкания. |
Не забудьте связать пейволы с транзакциями покупок. В противном случае Adapty не сможет определить источник пейвола для покупки.