# SDK mobile (bêta) : Android et iOS

Recueillir, appliquer et prouver le consentement dans vos apps, avec le même contrat que le web.

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

Le SDK mobile FlowConsent (bêta) est un SDK de **décision et de preuve**, pas une UI imposée : votre app garde son écran de consentement, le SDK gère l'état (même contrat v1 que le cookie web), la propagation aux SDK tiers et la preuve — chaque choix apparaît dans votre Consent Registry comme un consentement web, et déclenche vos webhooks.

## Installation

Android — publié sur Maven Central :

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

iOS — via Swift Package Manager :

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

Le code source est ouvert : [github.com/BeBranded-xyz/flowconsent-mobile](https://github.com/BeBranded-xyz/flowconsent-mobile), avec des apps démo copiables pour Android (Compose) et iOS (SwiftUI).

## Android (Kotlin)

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

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

// après le choix de l'utilisateur :
val d = FlowConsent.setConsent(analytics = true, marketing = false)
firebaseAnalytics.setConsent(ConsentContract.toGoogleConsentMap(d)) // si votre app utilise Firebase
```

Refus par défaut : sans enregistrement (ou périmé, ou après un changement de configuration de la bannière — `fetchRemoteConfig()`), tout est refusé avec une raison explicite. Identifiant pseudonyme local (jamais IDFA/GAID).

## iOS (Swift Package)

`FlowConsentCore` expose le même moteur (`ConsentContract.parse`, `toGoogleConsentMap`) plus la doctrine App Tracking Transparency :

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

Règle : écran RGPD d'abord ; le prompt ATT ne se justifie que si le marketing a été accepté, et c'est toujours votre app qui le déclenche.

## Firebase est-il requis ?

Non. Le SDK n'importe aucun SDK tiers : `toGoogleConsentMap()` renvoie une simple table de chaînes à passer à `setConsent` **si** votre app utilise Firebase/GA4. Sans Firebase, utilisez `decision.can("analytics")` pour conditionner vos propres appels.
