Panoramica
Questo documento fornisce linee guida complete per l'implementazione della gestione del consenso nelle applicazioni mobili, garantendo la conformità alle normative sulla protezione dei dati, inclusi i requisiti del GDPR, della LGPD e dell'IAB Transparency & Consent Framework (TCF). Affronta la corretta gestione del consenso degli utenti per i servizi di terze parti, tra cui reti pubblicitarie, piattaforme di analisi e altri servizi di tracciamento.
Requisiti di implementazione
1. Non attivare servizi di terze parti senza la verifica del consenso
Passaggi di implementazione:
- Verifica se l'utente ha espresso il proprio consenso
- Verifica il consenso per il fornitore/servizio specifico
- Avvia il servizio solo se entrambe le condizioni sono soddisfatte
- Se non è stato concesso il consenso per un determinato fornitore o scopo, dovrai:
2. Verifica del consenso in due fasi
Implementa sempre entrambi i controlli come richiesto dall'articolo 7(1) del GDPR e dalle specifiche IAB TCF:
Fase 1: L'utente ha preso una decisione?
- Verifica se l'utente ha interagito con il layer di consenso
- Se non è stata presa alcuna decisione, non trattare i dati personali
Fase 2: L'utente acconsente a uno scopo specifico?
- Verifica se è stato concesso il consenso per lo specifico servizio di terze parti
- Ogni fornitore/servizio richiede una verifica individuale del consenso
Scenari del flusso di lavoro dell'utente
Scenario 1: Flusso di lavoro dell'utente normale
Flusso: l'utente apre l'app → l'SDK mostra il layer di consenso (se necessario) → l'utente effettua una scelta → l'app prosegue con i servizi appropriati
Importante: la navigazione tramite il pulsante Indietro o i gesti è disabilitata sui nostri SDK mobili, quindi l'utente non può chiudere la finestra di consenso senza aver dato il proprio consenso.
Passaggi di implementazione:
- App Startup: Inizializza la piattaforma di gestione del consenso. A tal fine utilizzerai il metodo checkAndOpen(). Consulta gli esempi nella nostra documentazione di supporto (iOS, Android)
- Verifica del consenso: il passaggio precedente determinerà automaticamente se il consenso è necessario o meno, in modo che l'utente possa prendere una decisione informata.
- Inizializzazione dei servizi: Inizializza i servizi in base alle scelte di consenso dell'utente
Esempio di implementazione:
// This hypothetical example assumes you have implemented:
// - OneSignal (s1448)
// - Google Ads/AdMob (s1)
// - Google Analytics (s26)
class yourGreatApp {
void function onAppLaunch() {
if shouldInitializeService("s148") {
OneSignal.initialize("your-token")
}
if shouldInitializeService("s1") {
AdMobService.initialize()
}
if shouldInitializeService("s26") {
FirebaseAnalytics.initializeApp("your-token")
}
}
boolean private function shouldInitializeService(string: purposeId):
// Phase 1: Check if user has made any decision
consentStatus = CMPManager.getUserStatus()
if consentStatus.status = "choiceDoesntExist"
return false // Consent Layer was not yet displayed to this client
return CMPManager.shared.getStatusForPurpose(id: purposeId) == "granted"
}
}
Scenario 2: Nessuna connessione a Internet
Flusso: l'utente apre l'app senza connessione a Internet → il CMP non riesce a caricare il layer di consenso → l'app deve gestire la situazione in modo corretto
Osservazioni critiche:
- Il nostro SDK mobile non è in grado di recuperare la configurazione dai server
- Le decisioni di consenso precedenti potrebbero essere ancora valide (ai sensi dell'articolo 7, paragrafo 3, del GDPR sul ritiro del consenso)
- L'app deve funzionare in modalità ridotta senza elaborare dati personali nel caso in cui non sia stato ancora fornito il consenso
Strategia di implementazione:
- Verifica la presenza di eventuali dati di consenso persistenti da sessioni precedenti (utilizzerai
getUserStatus()come nell'esempio precedente) - Se esiste un consenso precedente, procedi normalmente
- Se non c'è consenso persistente e non c'è Internet:
-
- Blocca tutti i servizi di terze parti non essenziali
- Mostra un messaggio intuitivo che spieghi la situazione
- Configura un listener di connettività per riprovare quando la connessione viene ripristinata e visualizza la finestra di consenso quando ciò accade
- Consenti le funzionalità di base dell'app che non richiedono il trattamento dei dati personali
Considerazioni sull'esperienza utente:
- Mostra un messaggio chiaro sulla funzionalità limitata
- Implementa l'opzione di riprova quando la connessione è disponibile
- Spiega che nessun dato personale verrà condiviso finché non saranno state effettuate le scelte relative alla privacy
- Fornisci l'opzione di continuare in modalità limitata
Scenario 3: Nessun consenso necessario
Situazione: l'utente si trova al di fuori dell'UE e il CMP è configurato per essere visualizzato solo nell'UE → Nessun layer di consenso mostrato
. Strategia di implementazione:
- Inizializza la configurazione CMP come di consueto
- Consenti a CMP di determinare se il layer di consenso debba essere mostrato utilizzando
checkAndOpen() - Se il consenso non è richiesto, lo stato dell'utente restituirà "choiceExists" e i fornitori e le finalità saranno impostati su "concesso"
- Avvia tutti i servizi normalmente
Reagisci alle modifiche relative al consenso
Le modifiche al consenso possono verificarsi in diversi scenari:
- L'utente apre le impostazioni di consenso e modifica le preferenze
- Il consenso scade e deve essere rinnovato (questa impostazione si trova nella sezione Legale della tua dashboard CMP)
- Cambiamenti nei requisiti legali che impongono la richiesta di un nuovo consenso
- L'utente richiede la cancellazione dei dati
Il checkAndOpen() metodo reagirà a tutte queste situazioni. Implementa un listener che tenga traccia delle modifiche al consenso. Puoi utilizzare il didReceiveConsent callback (iOS e Android). Se in qualsiasi momento un determinato fornitore o finalità viene rifiutato, intervieni immediatamente e blocca i servizi di conseguenza.
Lista di controllo per il test
Test funzionali
Test del flusso normale:
- L'app si avvia correttamente e mostra il layer di consenso quando necessario
- Le scelte relative al consenso degli utenti vengono correttamente registrate e rispettate
- I servizi si attivano solo previo consenso appropriato
- L'app funziona correttamente dopo le decisioni relative al consenso
Test del flusso di rifiuto:
- Il rifiuto da parte dell'utente blocca correttamente i servizi di terze parti
- L'app rimane funzionante o entra in modalità ridotta a seconda della tua strategia di guadagno
Test offline:
- L'app gestisce con eleganza l'assenza di connessione a Internet
- I dati di consenso memorizzati nella cache vengono utilizzati in modo appropriato
- La modalità "privacy-friendly" si attiva quando necessario
- Il ripristino della connessione attiva la logica di riprova corretta
Test di timeout:
- Il timeout del consent layer attiva il fallback appropriato
- L'app non si blocca né va in crash durante il timeout
- La modalità di fallback blocca correttamente il trattamento dei dati
- L'utente riceve una comunicazione chiara sullo stato
Test di conformità
Verifica del trattamento dei dati:
- Nessun dato di tracciamento viene inviato prima che l'utente dia il proprio consenso
- ID dei fornitori correttamente associati ai servizi effettivi
- Il blocco dei singoli servizi funziona come previsto
- Granularità del consenso correttamente implementata
Verifica dei requisiti legali:
- La revoca del consenso interrompe immediatamente il trattamento dei dati
- I diritti degli interessati possono essere esercitati tramite l'app
- Adeguata tracciabilità delle decisioni relative al consenso
- Base giuridica documentata per tutti i trattamenti dei dati
Risoluzione dei problemi
Problemi comuni e soluzioni
Problema: i servizi si avviano anche quando il consenso viene negato
. Cause alla radice:
- Mancato controllo del consenso prima dell'avvio del servizio
- Mappatura errata dell'ID fornitore
Soluzioni:
- Aggiungi una verifica del consenso esplicito prima dell'avvio di TUTTI i servizi di terze parti
- Verifica che gli ID dei fornitori corrispondano a quelli presenti nell'elenco globale dei fornitori
- Assicurati che ci sia una corretta sincronizzazione tra il consenso e l'avvio del servizio
- Indica chiaramente in quali casi il servizio viene interrotto in caso di revoca del consenso
Problema: il layer di consenso non viene mai visualizzato
. Possibili cause:
- Configurazione CMP errata (ID, dominio, ecc. sbagliati)
- Problemi di connettività di rete
- L'utente si trova al di fuori dell'area geografica di riferimento
- Problemi di integrazione dell'app
Passaggi di correzione:
- Verifica che la configurazione del CMP corrisponda alle impostazioni dell'account
- Verifica la connettività di rete e l'accessibilità del server CMP
- Controlla i log della console per eventuali messaggi di errore
- Esegui un test con il layer di consenso a apertura forzata per verificare l'integrazione
- Conferma le impostazioni di targeting geografico nella dashboard di CMP
Lista di controllo delle priorità di implementazione
Alta priorità (da completare prima del lancio):
- Verifica del consenso implementata prima dell'avvio di TUTTI i servizi di terze parti
- Gestione corretta degli errori per problemi di timeout, di rete e di configurazione
- Funzionalità di base dell'app preservata quando non è possibile determinare il consenso
- Tutti gli ID dei fornitori sono stati verificati e correttamente associati ai servizi effettivi
Miglioramenti in corso:
- Monitora le statistiche sulla tua dashboard CMP per verificare i tassi di successo del consenso
- Test A/B per l'ottimizzazione del layer di consenso
- Integrazione con ulteriori quadri normativi
- Maggiore informazione degli utenti sulle scelte relative alla privacy
Ricorda: in caso di incertezza sui requisiti di consenso, scegli sempre l'approccio che garantisce una maggiore tutela della privacy. È meglio essere eccessivamente cauti piuttosto che violare la privacy degli utenti o i requisiti normativi.