---
title: "Responder a acciones de botones en el SDK de Unity"
description: "Gestiona las acciones de botones de paywall en Unity usando Adapty para una mejor monetización de la app."
---

Si estás creando paywalls con el Paywall Builder de Adapty, es fundamental configurar los botones correctamente:

1. Añade un [botón en el Paywall Builder](paywall-buttons) y asígnale una acción existente o crea un ID de acción personalizado.
2. Escribe código en tu app para gestionar cada acción que hayas asignado.

Esta guía muestra cómo gestionar acciones personalizadas y predefinidas en tu código.

:::warning
**Solo las compras y restauraciones se gestionan automáticamente.** El resto de acciones de botones, como cerrar paywalls o abrir enlaces, requieren implementar respuestas específicas en el código de la app.
:::

## Cerrar paywalls \{#close-paywalls\}

Para añadir un botón que cierre tu paywall:

1. En el Paywall Builder, añade un botón y asígnale la acción **Close**.
2. En el código de tu app, implementa un handler para la acción `close` que descarte el paywall.

```csharp showLineNumbers title="Unity"
public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view, 
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.Close:
            view.Dismiss(null);
            break;
        default:
            // handle other events
            break;
    }
}
```

## Abrir URLs desde paywalls \{#open-urls-from-paywalls\}

:::tip
Si quieres añadir un grupo de enlaces (p. ej., términos de uso y restauración de compras), añade un elemento **Link** en el Paywall Builder y gestíonalo igual que los botones con la acción **Open URL**.
:::

Para añadir un botón que abra un enlace desde tu paywall (p. ej., **Terms of use** o **Privacy policy**):

1. En el Paywall Builder, añade un botón, asígnale la acción **Open URL** e introduce la URL que quieres abrir.
2. En el código de tu app, implementa un handler para la acción `openUrl` que abra la URL recibida en un navegador.

```csharp showLineNumbers title="Unity"
public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view,
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.OpenUrl:
            var urlString = action.Value;
            if(!string.IsNullOrWhiteSpace(urlString)) {
                Application.OpenURL(urlString);
            }
            break;
        default:
            // handle other events
            break;
    }
}
```

## Iniciar sesión en la app \{#log-into-the-app\}

Para añadir un botón que permita a los usuarios iniciar sesión en tu app:

1. En el Paywall Builder, añade un botón y asígnale la acción **Custom** con el ID `login`.
2. En el código de tu app, implementa un handler para la acción personalizada `login` que identifique a tu usuario.

```csharp showLineNumbers title="Unity"
public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view,
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.Custom:
            if (action.Value == "login") {
                // Navigate to login scene
                SceneManager.LoadScene("LoginScene");
            }
            break;
        default:
            // handle other events
            break;
    }
}
```
## Gestionar acciones personalizadas \{#handle-custom-actions\}

Para añadir un botón que gestione cualquier otra acción:

1. En el Paywall Builder, añade un botón, asígnale la acción **Custom** y asígnale un ID.
2. En el código de tu app, implementa un handler para el ID de acción que hayas creado.

Por ejemplo, si tienes otro conjunto de ofertas de suscripción o compras únicas, puedes añadir un botón que muestre otro paywall:

```csharp showLineNumbers title="Unity"
public void PaywallViewDidPerformAction(
    AdaptyUIPaywallView view,
    AdaptyUIUserAction action
) {
    switch (action.Type) {
        case AdaptyUIUserActionType.Custom:
            if (action.Value == "openNewPaywall") {
                // Display another paywall
                ShowAlternativePaywall();
            }
            break;
        default:
            // handle other events
            break;
    }
}

private void ShowAlternativePaywall() {
    // Implement your logic to show alternative paywall
}
```