# SDK móvil (beta): Android e iOS

Recoger, aplicar y probar el consentimiento en tus apps, con el mismo contrato que la web.

> Canonical: https://www.flowconsent.com/es/doc/mobile-sdk
> Last updated: 2026-07-31
## Principio

El SDK móvil de FlowConsent (beta) es un SDK de **decisión y prueba**, no una UI impuesta: tu app conserva su propia pantalla de consentimiento, el SDK gestiona el estado (el mismo contrato v1 que la cookie web), la propagación a los SDK de terceros y la prueba — cada elección aparece en tu Consent Registry como un consentimiento web, y dispara tus webhooks.

## Instalación

Android — publicado en Maven Central:

```kotlin
dependencies {
    implementation("com.flowconsent:flowconsent-android:0.1.0")
}
```

iOS — vía Swift Package Manager:

```swift
.package(url: "https://github.com/BeBranded-xyz/flowconsent-mobile", exact: "0.1.0")
```

El código fuente es abierto: [github.com/BeBranded-xyz/flowconsent-mobile](https://github.com/BeBranded-xyz/flowconsent-mobile), con apps de demostración copiables para Android (Compose) e iOS (SwiftUI).

## Android (Kotlin)

```kotlin
FlowConsent.configure(context, licenseCode = "XXXX-…", workerUrl = "https://….consent.flowconsent.com")

val decision = FlowConsent.readConsent()
if (!decision.hasValidConsent) showMyConsentScreen()

// tras la elección del usuario:
val d = FlowConsent.setConsent(analytics = true, marketing = false)
firebaseAnalytics.setConsent(ConsentContract.toGoogleConsentMap(d)) // si tu app usa Firebase
```

Rechazo por defecto: sin registro (o caducado, o tras un cambio de configuración del banner — `fetchRemoteConfig()`), todo queda rechazado con una razón explícita. Identificador pseudónimo local (nunca IDFA/GAID).

## iOS (Swift Package)

`FlowConsentCore` expone el mismo motor (`ConsentContract.parse`, `toGoogleConsentMap`) más la doctrina App Tracking Transparency:

```swift
if ConsentContract.shouldRequestATT(decision) {
    ATTrackingManager.requestTrackingAuthorization { _ in }
}
```

Regla: pantalla RGPD primero; el prompt de ATT solo se justifica si el marketing fue aceptado, y siempre es tu app quien lo dispara.

## ¿Es necesario Firebase?

No. El SDK no importa ningún SDK de terceros: `toGoogleConsentMap()` devuelve una simple tabla de cadenas que pasar a `setConsent` **si** tu app usa Firebase/GA4. Sin Firebase, usa `decision.can("analytics")` para condicionar tus propias llamadas.
