展示流程和付费墙 - iOS
如果您已经创建了流程或付费墙,无需在移动应用代码中手动处理渲染逻辑,它本身就包含了展示内容和展示方式的所有信息。
若要获取下文使用的 AdaptyUI.FlowConfiguration 对象,请参阅获取流程和付费墙。
在 SwiftUI 中展示流程和付费墙
以模态视图方式展示
如需在设备屏幕上以模态视图方式展示流程或付费墙,请在 SwiftUI 中使用 .flow 修饰符。最简调用需要 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 | 可选 | 决定流程或付费墙是以全屏模式还是 sheet 方式显示。默认为 true。 |
| didAppear | 可选 | 当流程或付费墙视图显示时触发。 |
| didDisappear | 可选 | 当流程或付费墙视图关闭时触发。 |
| didPerformAction | 可选 | 当用户点击按钮时触发。预定义了两个操作 ID:close 和 openURL,其他为自定义操作,可在编辑器中设置。 |
| 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 中展示流程和付费墙
如需在设备屏幕上展示流程或付费墙,请按以下步骤操作:
-
使用
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 表示所请求的流程或付费墙屏幕的对象。 -
对象成功创建后,即可在设备屏幕上展示:
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:close 和 openURL,其他为自定义操作,可在编辑器中设置。 |
| 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 中展示付费墙
如需在设备屏幕上展示可视化付费墙,请按以下步骤操作:
-
使用
.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 表示所请求的付费墙屏幕的对象。 -
对象成功创建后,即可在设备屏幕上展示:
present(visualPaywall, animated: true)
想查看 Adapty SDK 集成到移动应用的真实案例吗?请查看我们的示例应用,其中演示了完整的集成设置,包括展示付费墙、完成购买及其他基础功能。