Linee guida sulla gestione del consenso per le app mobili

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:
  1. Verifica se l'utente ha espresso il proprio consenso
  2. Verifica il consenso per il fornitore/servizio specifico
  3. Avvia il servizio solo se entrambe le condizioni sono soddisfatte
  4. 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:
  1. 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)
  2. Verifica del consenso: il passaggio precedente determinerà automaticamente se il consenso è necessario o meno, in modo che l'utente possa prendere una decisione informata. 
  3. 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:
  1. Verifica la presenza di eventuali dati di consenso persistenti da sessioni precedenti (utilizzerai getUserStatus() come nell'esempio precedente)
  2. Se esiste un consenso precedente, procedi normalmente
  3. 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:

  1. Inizializza la configurazione CMP come di consueto
  2. Consenti a CMP di determinare se il layer di consenso debba essere mostrato utilizzando checkAndOpen()
  3. Se il consenso non è richiesto, lo stato dell'utente restituirà "choiceExists" e i fornitori e le finalità saranno impostati su "concesso"
  4. 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.

 

We do our best to keep this purely informative documentation up to date. However, if you notice that any of these guides need a little touch-up, let us know!