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

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

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

Это гайд по обработке пользовательских и стандартных действий в коде.

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

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

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

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

```typescript showLineNumbers

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onCloseButtonPress() {
    console.log('User closed paywall');
    return true; // Allow the paywall to close
  }
});
```

## Открытие 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
В Capacitor SDK действие `window.open` по умолчанию открывает URL. Однако при необходимости вы можете переопределить это поведение в коде.
:::

```typescript showLineNumbers

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onUrlPress(url) {
    window.open(url, '_blank');
    return false; // Don't close the paywall
  },
});
```

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

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

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

```typescript showLineNumbers

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
  onCustomAction(actionId) {
    if (actionId === 'login') {
      // Navigate to login screen
      console.log('User requested login');
    }
  }
});
```

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

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

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

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

```typescript showLineNumbers
const unsubscribe = view.setEventHandlers({
  onCustomAction(actionId) {
    if (actionId === 'openNewPaywall') {
      // Display another paywall
      console.log('User requested new paywall');
    }
  },
});
```