响应流程操作 - iOS
如果你正在使用 Adapty Flow Builder 或付费墙编辑工具构建流程或付费墙,请务必正确设置按钮:
- 在付费墙编辑工具中添加按钮,并为其分配预置动作或创建自定义动作 ID。
- 在应用代码中编写处理每个动作的逻辑。
本指南介绍如何在代码中处理自定义动作和预置动作。
只有流程/付费墙关闭和 URL 打开会被自动处理。 其他所有按钮动作都需要在应用代码中实现相应的响应逻辑。
关闭流程与付费墙
要添加一个可以关闭流程或付费墙的按钮:
- 在编辑工具中,添加一个按钮并为其分配 Close 操作。
- 在应用代码中,为
close动作实现相应的处理逻辑。
在 iOS SDK 中,close 动作默认会触发关闭流程或付费墙。不过,如有需要,你可以在代码中覆盖此行为。例如,关闭一个流程时可以触发打开另一个流程。
.flow(
isPresented: $flowPresented,
flowConfiguration: flowConfiguration,
didPerformAction: { action in
switch action {
case .close:
flowPresented = false // dismiss the flow or paywall
default:
break
}
},
didFailPurchase: { product, error in /* handle the error */ },
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in flowPresented = false }
)从流程和付费墙中打开 URL
如果你想添加一组链接(例如使用条款和购买恢复),可以在编辑工具中添加 Link 元素,并像处理带有 Open URL 动作的按钮一样处理它。
要添加一个从流程或付费墙中打开链接的按钮(例如使用条款或隐私政策):
- 在编辑工具中,添加一个按钮,为其指定 Open URL 动作,并输入你想打开的 URL。
- 在应用代码中,为
openURL动作实现一个处理程序,用于在浏览器中打开接收到的 URL。
在 iOS SDK 中,openURL 操作默认会触发打开对应 URL。不过,如有需要,你可以在代码中覆盖此行为。
.flow(
isPresented: $flowPresented,
flowConfiguration: flowConfiguration,
didPerformAction: { action in
switch action {
case let .openURL(url):
UIApplication.shared.open(url, options: [:]) // default behavior
default:
break
}
},
didFailPurchase: { product, error in /* handle the error */ },
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in flowPresented = false }
)处理自定义动作
要添加一个处理其他动作的按钮:
- 在编辑工具中,添加一个按钮,为其分配 Custom 动作,并设置一个 ID。
- 在应用代码中,为你创建的动作 ID 实现对应的处理逻辑。
例如,如果你有另一组订阅优惠或一次性购买,可以添加一个按钮来展示另一个流程或付费墙:
.flow(
isPresented: $flowPresented,
flowConfiguration: flowConfiguration,
didPerformAction: { action in
switch action {
case let .custom(id):
if id == "openNewPaywall" {
// Display another flow or paywall
}
default:
break
}
},
didFailPurchase: { product, error in /* handle the error */ },
didFinishRestore: { profile in /* check access level and dismiss */ },
didFailRestore: { error in /* handle the error */ },
didFailRendering: { error in flowPresented = false }
)如果你正在使用 Adapty 付费墙编辑工具构建付费墙,正确设置按钮至关重要:
- 在付费墙编辑工具中添加按钮,并为其分配已有操作或创建自定义操作 ID。
- 在应用代码中编写逻辑,处理每个已分配的操作。
本指南介绍如何在代码中处理自定义操作和已有操作。
只有购买、恢复购买、关闭付费墙和打开 URL 会被自动处理。 其他所有按钮操作都需要在应用代码中实现相应的响应逻辑。
关闭付费墙
要添加一个可关闭付费墙的按钮:
- 在付费墙编辑工具中,添加一个按钮并为其分配 Close 操作。
- 在您的应用代码中,实现
close操作的处理程序以关闭付费墙。
在 iOS SDK 中,close 操作默认会触发关闭付费墙。但如有需要,您可以在代码中覆盖此行为。例如,关闭一个付费墙可能会触发打开另一个付费墙。
func paywallController(_ controller: AdaptyPaywallController,
didPerform action: AdaptyUI.Action) {
switch action {
case .close:
controller.dismiss(animated: true) // default behavior
break
}
}从付费墙打开 URL
如果您想添加一组链接(例如使用条款和恢复购买),可以在付费墙编辑工具中添加一个 Link 元素,并以与带有 Open URL 操作的按钮相同的方式进行处理。
要添加一个可从付费墙打开链接的按钮(例如使用条款或隐私政策):
- 在付费墙编辑工具中,添加一个按钮,为其分配 Open URL 操作,并输入您想要打开的 URL。
- 在您的应用代码中,实现
openUrl操作的处理程序,在浏览器中打开接收到的 URL。
在 iOS SDK 中,openUrl 操作默认会触发打开 URL。但如有需要,您可以在代码中覆盖此行为。
func paywallController(_ controller: AdaptyPaywallController,
didPerform action: AdaptyUI.Action) {
switch action {
case let .openURL(url):
UIApplication.shared.open(url, options: [:]) // default behavior
break
}
}登录应用
要添加一个可让用户登录应用的按钮:
- 在付费墙编辑工具中,添加一个按钮并为其分配 Login 操作。
- 在您的应用代码中,实现
login操作的处理程序以识别您的用户。
func paywallController(_ controller: AdaptyPaywallController,
didPerform action: AdaptyUI.Action) {
switch action {
case .login:
// Show a login screen
let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "LoginViewController")
controller.present(loginVC, animated: true)
}
}处理自定义操作
要添加一个处理其他任意操作的按钮:
- 在付费墙编辑工具中,添加一个按钮,为其分配 Custom 操作,并指定一个 ID。
- 在您的应用代码中,实现您所创建的操作 ID 的处理程序。
例如,如果您有另一组订阅套餐或一次性购买,可以添加一个按钮来展示另一个付费墙:
func paywallController(_ controller: AdaptyPaywallController,
didPerform action: AdaptyUI.Action) {
switch action {
case let .custom(id):
if id == "openNewPaywall" {
// 展示另一个付费墙
}
}
break
}
}