---
title: "Реакция на действия кнопок в iOS SDK"
description: "Обрабатывайте действия кнопок пейвола в iOS с помощью Adapty для улучшения монетизации приложения."
---

Если вы создаёте пейволы с помощью Paywall Builder, важно правильно настроить кнопки:

1. Добавьте [кнопку в Paywall Builder](paywall-buttons) и назначьте ей одно из готовых действий или создайте собственный идентификатор действия.
2. Напишите код в приложении для обработки каждого назначенного действия.

В этом гайде показано, как обрабатывать пользовательские и готовые действия в коде.

:::warning
**Покупки, восстановление, закрытие пейвола и открытие URL обрабатываются автоматически.** Все остальные действия кнопок требуют явной реализации в коде приложения.
:::

## Закрытие пейволов \{#close-paywalls\}

Чтобы добавить кнопку для закрытия пейвола:

1. В Paywall Builder добавьте кнопку и назначьте ей действие **Close**.
2. В коде приложения реализуйте обработчик действия `close`, который скрывает пейвол.

:::info
В iOS SDK действие `close` по умолчанию закрывает пейвол. При необходимости это поведение можно переопределить в коде. Например, закрытие одного пейвола может инициировать открытие другого.
:::

```swift
func paywallController(_ controller: AdaptyPaywallController,
                       didPerform action: AdaptyUI.Action) {
    switch action {
        case .close:
            controller.dismiss(animated: true) // default behavior
            break
    }
}
```

## Открытие URL из пейвола \{#open-urls-from-paywalls\}

:::tip
Если вы хотите добавить группу ссылок (например, условия использования и восстановление покупок), добавьте элемент **Link** в Paywall Builder и обработайте его так же, как кнопки с действием **Open URL**.
:::

Чтобы добавить кнопку, открывающую ссылку из пейвола (например, **Terms of use** или **Privacy policy**):

1. В Paywall Builder добавьте кнопку, назначьте ей действие **Open URL** и укажите нужный URL.
2. В коде приложения реализуйте обработчик действия `openUrl`, который открывает полученный URL в браузере.

:::info
В iOS SDK действие `openUrl` по умолчанию открывает URL. При необходимости это поведение можно переопределить в коде.
:::

```swift
func paywallController(_ controller: AdaptyPaywallController,
                       didPerform action: AdaptyUI.Action) {
    switch action {
        case let .openURL(url):
            UIApplication.shared.open(url, options: [:]) // default behavior
        break
    }
}
```

## Вход в приложение \{#log-into-the-app\}

Чтобы добавить кнопку для входа пользователей в приложение:

1. В Paywall Builder добавьте кнопку и назначьте ей действие **Login**.
2. В коде приложения реализуйте обработчик действия `login`, который идентифицирует пользователя.

```swift
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)
   }
}
```

## Обработка пользовательских действий \{#handle-custom-actions\}

Чтобы добавить кнопку для обработки произвольных действий:

1. В Paywall Builder добавьте кнопку, назначьте ей действие **Custom** и задайте идентификатор.
2. В коде приложения реализуйте обработчик для созданного идентификатора действия.

Например, если у вас есть дополнительный набор предложений подписки или разовых покупок, можно добавить кнопку, которая откроет другой пейвол:

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