展示流程和付费墙 - iOS
如果您已经创建了流程或付费墙,无需在移动应用代码中手动处理渲染逻辑,它本身就包含了展示内容和展示方式的所有信息。
若要获取下文使用的 AdaptyUI.FlowConfiguration 对象,请参阅获取流程和付费墙。
在 SwiftUI 中展示流程和付费墙
以模态视图形式展示
如需在设备屏幕上以模态视图的形式展示流程或付费墙,请在 SwiftUI 中使用 .flow 修饰符。最简调用需要 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 | 可选 | 决定流程或付费墙以全屏模式还是以浮层方式呈现。默认值为 true。 |
| didAppear | 可选 | 当流程或付费墙视图呈现时触发。 |
| didDisappear | 可选 | 当流程或付费墙视图关闭时触发。 |
| didPerformAction | 可选 | 当用户点击按钮时触发。预定义了两个动作 ID:close 和 openURL;其他为自定义动作,可在编辑器中设置。 |
| didSelectProduct | 可选 | 当用户或系统选中某个产品准备购买时触发。 |
| didStartPurchase | 可选 | 当用户开始购买流程时触发。 |
| didFinishWebPaymentNavigation | 可选 | 当网页支付导航完成时触发。 |
| didStartRestore | 可选 | 当用户开始恢复购买流程时触发。 |
| didFailLoadingProducts | 可选 | 当产品加载出错时触发。返回 true 可重新尝试加载。 |
| didPartiallyLoadProducts | 可选 | 当产品部分加载完成时触发。 |
| showAlertItem | 可选 | 一个绑定值,用于控制流程或付费墙上方弹窗的显示。 |
| showAlertBuilder | 可选 | 用于渲染弹窗视图的函数。 |
| placeholderBuilder | 可选 | 用于在流程或付费墙加载时渲染占位视图的函数。默认为 ProgressView。 |
| 有关参数的更多详细信息,请参阅 iOS - 处理事件 主题。 |
以非模态视图方式呈现
你也可以将流程和付费墙作为导航目标或内联视图嵌入到应用的导航流程中。直接在 SwiftUI 视图中使用 AdaptyFlowView:
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 中展示流程和付费墙
如需在设备屏幕上展示流程或付费墙,请按以下步骤操作:
-
使用
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 }
)
}I notice the input contains only “Parameters:” with no MDX content to translate. However, following the instructions, I should return whatever was given. Since there is only this minimal text:
Parameters:
| 参数 | 是否必填 | 描述 |
|---|---|---|
| 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,其中 close 和 openURL 是预定义的操作 ID,其他则为自定义 ID,可在编辑工具中设置。 |
| 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 在移动应用中集成的真实案例?查看我们的示例应用,其中展示了完整的接入流程,包括显示付费墙、发起购买以及其他基本功能。