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

Отображение флоу и пейволов
Флоу Создаются в Flow Builder — рендерятся нативно на устройстве, без WebView
Пейволы Paywall Builder Весь существующий контент Paywall Builder

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

Чтобы получить объект 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

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

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

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

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

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

    Возвращает:

    ОбъектОписание
    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 }
      )
}

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

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

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

    import AdaptyUI
    
    let visualPaywall = AdaptyUI.paywallController(
        with: <paywall configuration object>,
        delegate: <AdaptyPaywallControllerDelegate>
    )

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

    ПараметрНаличиеОписание
    paywall configurationrequiredОбъект AdaptyUI.PaywallConfiguration, содержащий визуальные детали пейвола. Используйте метод AdaptyUI.getPaywallConfiguration(forPaywall:locale:). Подробнее см. в разделе Получение пейволов Paywall Builder и их конфигурации.
    delegaterequiredAdaptyPaywallControllerDelegate для обработки событий пейвола. Подробнее см. в разделе Обработка событий пейвола.

Возвращает:

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

    present(visualPaywall, animated: true)

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