在 iOS SDK 中响应按钮操作

如果您正在使用 Adapty 付费墙编辑工具构建付费墙,正确设置按钮至关重要:

  1. 在付费墙编辑工具中添加一个按钮,并为其分配一个预设操作或创建自定义操作 ID。
  2. 在您的应用代码中,编写处理每个已分配操作的逻辑。

本指南介绍如何在代码中处理自定义操作和预设操作。

只有购买、恢复购买、关闭付费墙和打开 URL 会被自动处理。 所有其他按钮操作都需要在应用代码中正确实现响应逻辑。

关闭付费墙

要添加一个可关闭付费墙的按钮:

  1. 在付费墙编辑工具中,添加一个按钮并为其分配 Close 操作。
  2. 在您的应用代码中,实现 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 操作的按钮相同的方式进行处理。

要添加一个可从付费墙打开链接的按钮(例如使用条款隐私政策):

  1. 在付费墙编辑工具中,添加一个按钮,为其分配 Open URL 操作,并输入您想要打开的 URL。
  2. 在您的应用代码中,实现 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
    }
}

登录应用

要添加一个可让用户登录应用的按钮:

  1. 在付费墙编辑工具中,添加一个按钮并为其分配 Login 操作。
  2. 在您的应用代码中,实现 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)
   }
}

处理自定义操作

要添加一个处理其他任意操作的按钮:

  1. 在付费墙编辑工具中,添加一个按钮,为其分配 Custom 操作,并指定一个 ID。
  2. 在您的应用代码中,实现您所创建的操作 ID 的处理程序。

例如,如果您有另一组订阅套餐或一次性购买,可以添加一个按钮来展示另一个付费墙:

func paywallController(_ controller: AdaptyPaywallController,
                      didPerform action: AdaptyUI.Action) {
   switch action {
       case let .custom(id):
           if id == "openNewPaywall" {
              // Display another paywall
              }
           }
           break
   }
}