Supporto IAB per GDPR

Ai sensi delle Norme relative al consenso degli utenti dell'UE di Google, è obbligatorio informare gli utenti nello Spazio economico europeo (SEE) e nel Regno Unito e ricevere il loro consenso per l'utilizzo dei cookie o di altro spazio di archiviazione locale, laddove richiesto dalla legge, nonché per l'utilizzo dei dati personali (ad esempio l'AdID) per la pubblicazione di annunci. Queste norme riflettono i requisiti della direttiva e-Privacy e del Regolamento generale sulla protezione dei dati (GDPR) dell'UE.

Questa guida illustra i passaggi necessari per supportare il messaggio GDPR IAB TCF v2 nell'ambito dell'SDK UMP. È pensato per essere abbinato a Inizia, che fornisce una panoramica su come avviare l'app con l'SDK UMP e le nozioni di base sulla configurazione del messaggio. Le seguenti indicazioni sono specifiche per il messaggio GDPR della versione 2 del TCF di IAB. Per ulteriori informazioni, consulta In che modo i requisiti IAB influiscono sui messaggi per il consenso degli utenti dell'UE.

Prerequisiti

Il GDPR richiede la revoca del consenso per consentire agli utenti di ritirare le loro scelte in qualsiasi momento. Consulta Opzioni per la privacy per implementare un modo per consentire agli utenti di revocare le loro scelte relative al consenso.

Per indicare se un utente non ha l'età del consenso, imposta setTagForUnderAgeOfConsent (TFUA). Quando imposti TFUA su true, l'SDK UMP non richiede il consenso dell'utente. Se la tua app ha un pubblico misto, imposta questo parametro per gli utenti minorenni per assicurarti che il consenso non venga richiesto.

Nell'esempio seguente, TFUA viene impostato su true in una richiesta di consenso UMP:

Java

ConsentRequestParameters params = new ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build();

consentInformation = UserMessagingPlatform.getConsentInformation(this);
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    (OnConsentInfoUpdateSuccessListener) () -> {
      // ...
    },
    (OnConsentInfoUpdateFailureListener) requestConsentError -> {
      // ...
    });

Kotlin

val params = ConsentRequestParameters
    .Builder()
    // Indicate the user is under age of consent.
    .setTagForUnderAgeOfConsent(true)
    .build()

consentInformation = UserMessagingPlatform.getConsentInformation(this)
consentInformation.requestConsentInfoUpdate(
    this,
    params,
    ConsentInformation.OnConsentInfoUpdateSuccessListener {
      // ...
    },
    ConsentInformation.OnConsentInfoUpdateFailureListener {
      requestConsentError ->
      // ...
    })

Mediazione

Segui i passaggi descritti in Aggiungere partner pubblicitari ai messaggi GDPR pubblicati per aggiungere i partner di mediazione all'elenco dei partner pubblicitari. In caso contrario, i partner potrebbero non pubblicare annunci nella tua app.

I partner di mediazione potrebbero anche disporre di strumenti aggiuntivi per aiutarti a rispettare il GDPR. Per maggiori dettagli, consulta la guida all'integrazione di un partner specifico.

Dopo aver raccolto il consenso GDPR, puoi leggere le scelte relative al consenso dallo spazio di archiviazione locale in base alla specifica della versione 2 del TCF. La chiave IABTCF_PurposeConsents indica il consenso per ciascuno degli scopi del TCF.

Il seguente snippet di codice mostra come verificare il consenso per lo scopo 1:

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "1111111111"
String purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "");
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
  String purposeOneString = purposeConsents.charAt(0);
  boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposesConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
  val purposeOneString = purposeConsents.first()
  val hasConsentForPurposeOne = purposeOneString == "1"
}

Domande frequenti

Cosa succede se non faccio nulla per soddisfare i requisiti delle piattaforme di gestione del consenso per la pubblicazione di annunci nel SEE e nel Regno Unito?

A partire dal 16 gennaio 2024, se un partner non adotta una CMP certificata da Google, solo annunci con limitazioni saranno idonei alla pubblicazione per il traffico nel SEE e nel Regno Unito.

L'applicazione inizierà il 16 gennaio 2024 per una piccola parte del traffico nel SEE e nel Regno Unito e verrà estesa fino a comprendere tutto il traffico proveniente da queste aree entro la fine di febbraio 2024. Implementa una CMP certificata entro il 16 gennaio 2024 per evitare conseguenze negative a livello di monetizzazione.

Come faccio a verificare se l'utente ha dato il consenso?

Il consenso non è rappresentato da un singolo bit, ma da un insieme di scopi e fornitori come definito nella specifica del TCF di IAB. Consulta Norme relative al consenso: annunci personalizzati e non personalizzati per conoscere i criteri di personalizzazione di Google Ads.

Inoltre, le tecnologie pubblicitarie nell'elenco dei fornitori di tecnologia pubblicitaria (ATP) di Google che non sono registrate nell'elenco dei fornitori del TCF utilizzano la specifica tecnica del Consenso aggiuntivo di Google per la raccolta del consenso. Google pubblica l'elenco dei fornitori di tecnologia pubblicitaria non registrati a IAB e i rispettivi ID nel seguente percorso: https://storage.googleapis.com/tcfac/additional-consent-providers.csv.

Per eseguire il debug di una singola richiesta di annuncio, utilizza la funzionalità di debug delle unità pubblicitarie avanzate nell'ispettore degli annunci per esportare una stringa di richiesta di annuncio. Cerca poi i seguenti parametri di query:

Parametro di ricerca Significato
gdpr Indica se il GDPR si applica a questa richiesta di annuncio.
gdpr_consent La stringa TC. L'IAB fornisce uno strumento web in cui puoi decodificare manualmente il valore.
addtl_consent La stringa AC riportata nella specifica tecnica del Consenso aggiuntivo di Google.

Per leggere le scelte relative al consenso in modo programmatico, consulta Come leggere le scelte relative al consenso per ulteriori informazioni.

Devo utilizzare l'SDK UMP di Google per soddisfare il requisito della CMP?

No, puoi utilizzare qualsiasi CMP elencata nell'elenco di CMP certificate da Google per pubblicare annunci.

Come faccio a mostrare di nuovo il modulo di consenso utilizzando l'SDK UMP anche se l'utente ha già dato il consenso?

Se un utente ha già preso una decisione in merito al consenso, la soluzione di gestione del consenso di Google non richiederà di raccogliere un nuovo consenso finché la stringa TC non è scaduta o non diventa non valida.

Il GDPR richiede la modifica del consenso per consentire agli utenti di revocare le proprie scelte in qualsiasi momento. Consulta le opzioni per la privacy per implementare un modo per consentire agli utenti di revocare le loro scelte relative al consenso. Per visualizzare di nuovo un modulo per il consenso, chiama showPrivacyOptionsForm().

Ho integrato una CMP certificata da Google, ma non vedo richieste di annunci ai partner di mediazione, nemmeno da parte degli utenti che hanno dato il consenso. Perché?

Ai sensi del TCF, Google verifica che i fornitori di tecnologia pubblicitaria e altre origini della domanda programmatica non violino le norme di Google e abbiano almeno un fondamento giuridico per elaborare i dati prima di includerli nella struttura a cascata della mediazione. Per ulteriori informazioni, vai alla sezione sulla mediazione.

Alcuni partner di mediazione nell'elenco dei fornitori di tecnologia pubblicitaria (ATP) di Google non sono registrati nell'elenco dei fornitori del TCF. Questi partner utilizzano invece la specifica tecnica del Consenso aggiuntivo di Google per la raccolta del consenso. Google pubblica l'elenco dei fornitori di tecnologia pubblicitaria non registrati a IAB e i rispettivi ID nel seguente percorso: https://storage.googleapis.com/tcfac/additional-consent-providers.csv

L'SDK UMP supporta la memorizzazione dell'ACString, consentendoti di aggiungere partner pubblicitari ai messaggi GDPR pubblicati senza dover capire se i partner sono registrati al TCF. Quando utilizzi una CMP di terze parti, devi:

  1. Verifica che la CMP di terze parti supporti la memorizzazione dell'ACString.
  2. Includi ogni partner di mediazione nell'elenco dei fornitori di tecnologia pubblicitaria utilizzati dalla CMP di terze parti per raccogliere il consenso.
Posso modificare il funzionamento della mia app se gli utenti non danno il consenso? È consentito dai criteri?

I publisher possono leggere la stringa del TCF di IAB nelle loro app. Consulta Come leggere le scelte relative al consenso per informazioni su come leggere le scelte relative al consenso in modo programmatico. Gli editori devono esaminare le proprie obbligazioni ai sensi delle normative pertinenti con un consulente legale.

Quando seleziono Gestisci le opzioni e do il consenso per tutti gli scopi, non vedo nessun annuncio. Perché?

Oltre a raccogliere il consenso per le finalità, devi anche raccogliere il consenso del fornitore. Sia il consenso per gli scopi sia il consenso del fornitore sono necessari per consentire a qualsiasi fornitore, come Google, di pubblicare annunci appropriati.

Come faccio a implementare la versione 2 della stringa AC per gli utenti che hanno già dato il consenso alla versione 1?

Controlla la chiave IABTCF_AddtlConsent nello spazio di archiviazione locale in base alle specifiche tecniche del consenso aggiuntivo di Google per determinare se un utente ha dato il consenso alla versione 2 della stringa AC e se è necessario mostrare di nuovo il modulo di consenso.

Java

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "2~1.35.41.101~dv.9.21.81"
String additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "");
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  String specACVersion = additionalConsent.charAt(0);
  boolean isACVersion2 = purposeOneString.equals("2");
}

Kotlin

val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "2~1.35.41.101~dv.9.21.81"
val additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "")
// Index 0 contains information about the specification version number.
if (!additionalConsent.isEmpty()) {
  val specACVersion = additionalConsent.first()
  val isACVersion2 = specACVersion == "2"
}