Отображение флоу и пейволов — iOS

Отображение флоу и пейволов
Flows BETA Built in Flow builder — renders natively on device, no WebView
Paywall Builder paywalls All existing Paywall Builder content

Если вы создали флоу или пейвол, вам не нужно беспокоиться об их отрисовке в коде мобильного приложения — всё, что должно быть показано и как именно, уже содержится внутри самого флоу или пейвола.

Чтобы получить объект AdaptyUI.FlowConfiguration, используемый ниже, см. Получение флоу и пейволов.

Отображение флоу и пейволов в SwiftUI

Отображение как модальное окно

Чтобы показать флоу или пейвол на экране устройства как модальное окно, используйте модификатор .flow в SwiftUI. Минимальный вызов требует isPresented, flowConfiguration и четыре обязательных коллбэка:

.flow(
    isPresented: $flowPresented,
    flowConfiguration: <AdaptyUI.FlowConfiguration>,
    didFailPurchase: { _, _ in /* handle the error */ },
    didFinishRestore: { _ in /* check access level and dismiss */ },
    didFailRestore: { _ in /* handle the error */ },
    didReceiveError: { _ in flowPresented = false }
)

Для большего контроля добавьте необязательные коллбэки: didPerformAction для обработки нажатий на кнопки и didFinishPurchase для реакции на успешные покупки:

@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
              }
          },
          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 }
      )
}

Параметры:

ПараметрОбязательныйОписание
isPresentedобязательныйПривязка, управляющая отображением экрана флоу или пейвола.
flowConfigurationобязательныйОбъект AdaptyUI.FlowConfiguration, содержащий визуальные детали флоу или пейвола. Используйте метод AdaptyUI.getFlowConfiguration(forFlow:). Подробнее см. в разделе Получение флоу и пейволов.
didFailPurchaseобязательныйВызывается при ошибке Adapty.makePurchase().
didFinishRestoreобязательныйВызывается при успешном завершении Adapty.restorePurchases().
didFailRestoreобязательныйВызывается при ошибке Adapty.restorePurchases().
didReceiveErrorобязательныйВызывается при ошибке рендеринга или ошибке выполнения скрипта флоу (например, JavaScript-исключение, код AdaptyUIError 4105). При ошибках рендеринга обратитесь в поддержку Adapty.
fullScreenнеобязательныйОпределяет, отображается ли флоу или пейвол в полноэкранном режиме или как шторка. По умолчанию true.
didAppearнеобязательныйВызывается, когда экран флоу или пейвола был показан.
didDisappearнеобязательныйВызывается, когда экран флоу или пейвола был закрыт.
didPerformActionнеобязательныйВызывается при нажатии пользователем на кнопку. Два ID действий предопределены: close и openURL; остальные — пользовательские и задаются в конструкторе.
didSelectProductнеобязательныйВызывается, когда продукт выбран для покупки пользователем или системой.
didStartPurchaseнеобязательныйВызывается, когда пользователь начинает процесс покупки.
didFinishPurchaseнеобязательныйВызывается при успешном завершении Adapty.makePurchase().
didFinishWebPaymentNavigationнеобязательныйВызывается по завершении навигации веб-оплаты.
didStartRestoreнеобязательныйВызывается, когда пользователь начинает процесс восстановления покупок.
didFailLoadingProductsнеобязательныйВызывается при ошибках загрузки продуктов. Верните true, чтобы повторить попытку.
didPartiallyLoadProductsнеобязательныйВызывается при частичной загрузке продуктов.
showAlertItemнеобязательныйПривязка, управляющая отображением элементов предупреждения поверх флоу или пейвола.
showAlertBuilderнеобязательныйФункция для отрисовки представления предупреждения.
placeholderBuilderнеобязательныйФункция для отрисовки заглушки во время загрузки флоу или пейвола. По умолчанию используется ProgressView.

Подробнее о параметрах см. в разделе iOS — Обработка событий.

Отображение как немодальное представление

Флоу и пейволы также можно отображать как точки назначения навигации или встроенные представления внутри навигационного флоу приложения. Используйте AdaptyFlowView напрямую в ваших SwiftUI-представлениях:

AdaptyFlowView(
    flowConfiguration: <AdaptyUI.FlowConfiguration>,
    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

Чтобы показать флоу или пейвол на экране устройства, выполните следующие шаги:

  1. Инициализируйте визуальный флоу, который хотите отобразить, с помощью метода AdaptyUI.flowController(with:delegate:):

    import AdaptyUI
    
    let visualFlow = try AdaptyUI.flowController(
        with: <AdaptyUI.FlowConfiguration>,
        delegate: <AdaptyFlowControllerDelegate>
    )

    Параметры запроса:

    ПараметрНаличиеОписание
    flowConfigurationобязательныйОбъект AdaptyUI.FlowConfiguration, содержащий визуальные детали флоу или пейвола. Используйте метод AdaptyUI.getFlowConfiguration(forFlow:). Подробнее см. в разделе Получение флоу и пейволов.
    delegateобязательныйAdaptyFlowControllerDelegate для прослушивания событий флоу и пейвола. Подробнее см. в разделе Обработка событий флоу и пейвола.

    Возвращает:

    ОбъектОписание
    AdaptyFlowControllerОбъект, представляющий запрошенный экран флоу или пейвола.
  2. После успешного создания объекта его можно отобразить на экране устройства:

    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 }
      )
}

Параметры:

ПараметрОбязательныйОписание
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необязательныйВызывается при нажатии пользователем на кнопку. Разные кнопки имеют разные ID действий. Два ID предопределены: 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

Чтобы показать визуальный пейвол на экране устройства, выполните следующие шаги:

  1. Инициализируйте визуальный пейвол, который хотите отобразить, с помощью метода .paywallController(for:products:viewConfiguration:delegate:):

    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Объект, представляющий запрошенный экран пейвола.
  2. После успешного создания объекта его можно отобразить на экране устройства:

    present(visualPaywall, animated: true)

Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Ознакомьтесь с нашими примерами приложений, которые демонстрируют полную настройку, включая отображение пейволов, совершение покупок и другой базовый функционал.