展示流程和付费墙 - iOS

展示流程和付费墙
Flows BETA Built in Flow builder — renders natively on device, no WebView
Paywall Builder paywalls All existing Paywall Builder content

如果您已经创建了流程或付费墙,无需在移动应用代码中手动处理渲染逻辑,它本身就包含了展示内容和展示方式的所有信息。

若要获取下文使用的 AdaptyUI.FlowConfiguration 对象,请参阅获取流程和付费墙

在 SwiftUI 中展示流程和付费墙

以模态视图方式展示

如需在设备屏幕上以模态视图方式展示流程或付费墙,请在 SwiftUI 中使用 .flow 修饰符。最简调用需要 isPresentedflowConfiguration 以及四个必填回调:

.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可选决定流程或付费墙是以全屏模式还是 sheet 方式显示。默认为 true
didAppear可选当流程或付费墙视图显示时触发。
didDisappear可选当流程或付费墙视图关闭时触发。
didPerformAction可选当用户点击按钮时触发。预定义了两个操作 ID:closeopenURL,其他为自定义操作,可在编辑器中设置。
didSelectProduct可选当用户或系统选择某个产品进行购买时触发。
didStartPurchase可选当用户开始购买流程时触发。
didFinishPurchase可选Adapty.makePurchase() 成功完成时触发。
didFinishWebPaymentNavigation可选当网页支付导航结束时触发。
didStartRestore可选当用户开始恢复购买流程时触发。
didFailLoadingProducts可选当产品加载出错时触发。返回 true 可重试加载。
didPartiallyLoadProducts可选当产品部分加载完成时触发。
showAlertItem可选用于管理在流程或付费墙上方显示提示项的绑定变量。
showAlertBuilder可选用于渲染提示视图的函数。
placeholderBuilder可选用于在流程或付费墙加载时渲染占位视图的函数。默认为 ProgressView

更多参数说明请参阅 iOS - 事件处理

以非模态视图方式展示

您也可以将流程和付费墙作为导航目标或内联视图嵌入到应用的导航流程中。直接在 SwiftUI 视图中使用 AdaptyFlowView

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 集成到移动应用的真实案例吗?请查看我们的示例应用,其中演示了完整的集成设置,包括展示付费墙、完成购买及其他基础功能。

如果您已经使用付费墙编辑工具自定义了付费墙,无需在移动应用代码中手动处理渲染逻辑,付费墙本身就包含了展示内容和展示方式的所有信息。

若要获取下文使用的 AdaptyUI.PaywallConfiguration 对象,请参阅获取付费墙编辑工具付费墙及其配置

在 SwiftUI 中展示付费墙

以模态视图方式展示

如需在设备屏幕上以模态视图方式展示可视化付费墙,请在 SwiftUI 中使用 .paywall 修饰符:

@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:) 方法。详情请参阅获取付费墙编辑工具付费墙及其配置
didFailPurchase必填Adapty.makePurchase() 失败时触发。
didFinishRestore必填Adapty.restorePurchases() 成功完成时触发。
didFailRestore必填Adapty.restorePurchases() 失败时触发。
didFailRendering必填当渲染界面时发生错误时触发。遇到此情况请联系 Adapty 支持
fullScreen可选决定付费墙是以全屏模式还是模态方式显示。默认为 true
didAppear可选当付费墙视图显示时触发。
didDisappear可选当付费墙视图关闭时触发。
didPerformAction可选当用户点击按钮时触发。不同按钮有不同的操作 ID。预定义了两个操作 ID:closeopenURL,其他为自定义操作,可在编辑器中设置。
didSelectProduct可选当用户或系统选择某个产品进行购买时触发。
didStartPurchase可选当用户开始购买流程时触发。
didFinishPurchase可选Adapty.makePurchase() 成功完成时触发。
didFinishWebPaymentNavigation可选当网页支付导航结束时触发。
didStartRestore可选当用户开始恢复购买流程时触发。
didFailLoadingProducts可选当产品加载出错时触发。返回 true 可重试加载。
didPartiallyLoadProducts可选当产品部分加载完成时触发。
showAlertItem可选用于管理在付费墙上方显示提示项的绑定变量。
showAlertBuilder可选用于渲染提示视图的函数。
placeholderBuilder可选用于在付费墙加载时渲染占位视图的函数。

更多参数说明请参阅 iOS - 事件处理

以非模态视图方式展示

您也可以将付费墙作为导航目标或内联视图嵌入到应用的导航流程中。直接在 SwiftUI 视图中使用 AdaptyPaywallView

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:) 方法。详情请参阅获取付费墙编辑工具付费墙及其配置
    delegate必填用于监听付费墙事件的 AdaptyPaywallControllerDelegate。详情请参阅处理付费墙事件

    返回值:

    对象说明
    AdaptyPaywallController表示所请求的付费墙屏幕的对象。
  2. 对象成功创建后,即可在设备屏幕上展示:

    present(visualPaywall, animated: true)

想查看 Adapty SDK 集成到移动应用的真实案例吗?请查看我们的示例应用,其中演示了完整的集成设置,包括展示付费墙、完成购买及其他基础功能。