---
title: "Comprobar el estado de la suscripción en el SDK de Kotlin Multiplatform"
description: "Aprende a comprobar el estado de la suscripción en tu app de Kotlin Multiplatform con Adapty."
---

Para decidir si los usuarios pueden acceder a contenido de pago o ver un paywall, necesitas comprobar su [nivel de acceso](access-level) en el perfil.

Este artículo muestra cómo acceder al estado del perfil para decidir qué deben ver los usuarios: si mostrarles un paywall o darles acceso a las funciones de pago.

## Obtener el estado de la suscripción \{#get-subscription-status\}

Cuando decides si mostrar un paywall o contenido de pago a un usuario, compruebas su [nivel de acceso](access-level) en su perfil. Tienes dos opciones:

- Llama a `getProfile` si necesitas los datos más recientes del perfil de inmediato (como al iniciar la app) o quieres forzar una actualización.
- Configura **actualizaciones automáticas del perfil** para mantener una copia local que se refresca automáticamente cada vez que cambia el estado de la suscripción.

### Obtener el perfil \{#get-profile\}

La forma más sencilla de obtener el estado de la suscripción es usar el método `getProfile` para acceder al perfil:

```kotlin showLineNumbers
Adapty.getProfile()
    .onSuccess { profile ->
        // check the access
    }
    .onError { error ->
        // handle the error
    }
```

### Escuchar actualizaciones de la suscripción \{#listen-to-subscription-updates\}

Para recibir actualizaciones del perfil automáticamente en tu app:

1. Usa `Adapty.setOnProfileUpdatedListener()` para escuchar cambios en el perfil: Adapty llamará a este método automáticamente cada vez que cambie el estado de la suscripción del usuario.
2. Almacena los datos del perfil actualizado cuando se llame a este método, para poder usarlos en toda tu app sin hacer peticiones de red adicionales.

```kotlin showLineNumbers
class SubscriptionManager {
    private var currentProfile: AdaptyProfile? = null
    
    init {
        // Listen for profile updates
        Adapty.setOnProfileUpdatedListener { profile ->
            currentProfile = profile
            // Update UI, unlock content, etc.
        }
    }
    
    // Use stored profile instead of calling getProfile()
    fun hasAccess(): Boolean {
        return currentProfile?.accessLevels?.get("YOUR_ACCESS_LEVEL")?.isActive == true
    }
}
```

:::note
Adapty llama automáticamente al listener de actualización del perfil cuando se inicia tu app, proporcionando datos de suscripción en caché incluso si el dispositivo está sin conexión.
:::

## Conectar el perfil con la lógica del paywall \{#connect-profile-with-paywall-logic\}

Cuando necesitas tomar decisiones inmediatas sobre si mostrar paywalls o dar acceso a funciones de pago, puedes comprobar el perfil del usuario directamente. Este enfoque es útil en escenarios como el inicio de la app, al entrar en secciones premium o antes de mostrar contenido específico.

```kotlin showLineNumbers
private fun checkAccessAndShowPaywall() {
    // First, check if user has access
    Adapty.getProfile()
        .onSuccess { profile ->
            val hasAccess = profile.accessLevels?.get("YOUR_ACCESS_LEVEL")?.isActive == true
            
            if (!hasAccess) {
                // User doesn't have access, show paywall
                showPaywall()
            } else {
                // User has access, show premium content
                showPremiumContent()
            }
        }
        .onError { error ->
            // If we can't check access, show paywall as fallback
            showPaywall()
        }
}

private fun showPaywall() {
    // Get and display paywall using the KMP SDK
    Adapty.getPaywall("YOUR_PLACEMENT_ID")
        .onSuccess { paywall ->
            if (paywall.hasViewConfiguration) {
                val paywallView = AdaptyUI.createPaywallView(paywall = paywall)
                paywallView?.present()
            } else {
                // Handle remote config paywall or show custom UI
                handleRemoteConfigPaywall(paywall)
            }
        }
        .onError { error ->
            // Handle paywall loading error
            showError("Unable to load paywall")
        }
}

private fun showPremiumContent() {
    // Show your premium content here
    // This is where you unlock paid features
}
```

## Próximos pasos \{#next-steps\}

Ahora que sabes cómo hacer seguimiento del estado de la suscripción, aprende a [trabajar con perfiles de usuario](kmp-quickstart-identify) para asegurarte de que pueden acceder a lo que han pagado.