SDK móvil (beta): Android e iOS
Recoger, aplicar y probar el consentimiento en tus apps, con el mismo contrato que la web.
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:
dependencies {
implementation("com.flowconsent:flowconsent-android:0.1.0")
}iOS — vía Swift Package Manager:
.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, con apps de demostración copiables para Android (Compose) e iOS (SwiftUI).
Android (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 FirebaseRechazo 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:
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.