Secondo le 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 altri tipi di archiviazione locale, laddove richiesto dalla legge, e per l'utilizzo dei dati personali (ad esempio AdID) per la pubblicazione degli annunci. Queste norme riflettono i requisiti della direttiva e-Privacy e del Regolamento generale sulla protezione dei dati (GDPR) dell'UE.
Per supportare i publisher nell'adempimento degli obblighi previsti da queste norme, Google offre l'SDK UMP (User Messaging Platform). L'SDK UMP è stato aggiornato per supportare gli ultimi standard IAB. Tutte queste configurazioni ora possono essere gestite facilmente in AdMob privacy e messaggi.
Prerequisiti
- Completa la Guida introduttiva.
- Configura i messaggi nella scheda Privacy e messaggi del tuo accountAdMob . Per maggiori dettagli, consulta Informazioni su privacy e messaggi,
- Se stai lavorando ai requisiti relativi al GDPR, leggi In che modo i requisiti IAB incidono sui messaggi per il consenso degli utenti dell'Unione europea.
Tipi di messaggi per gli utenti
Consulta l'articolo Tipi di messaggi per gli utenti per un elenco completo dei messaggi supportati. Per istruzioni specifiche sull'implementazione di ogni tipo di messaggio, consulta la barra di navigazione a sinistra.
Installazione con Gradle
Se usi l'SDK Google Mobile Ads versione 19.8.0 o successive, l'SDK UMP è incluso nel pacchetto. Se utilizzi una versione precedente dell'SDK Mobile Ads, includi l'SDK UMP nel file build.gradle della tua app nel seguente modo:
dependencies {
// This dependency is automatically included by Google Mobile Ads SDK 19.8.0
// or higher.
implementation 'com.google.android.ump:user-messaging-platform:2.0.0'
}
Dopo aver apportato le modifiche al file build.gradle della tua app, assicurati di sincronizzare il tuo progetto con i file Gradle.
Dopodiché,
trova l'ID app
e aggiungilo a AndroidManifest.xml
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.rewardedinterstitialexample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- Sample app ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Determina se un messaggio deve essere visualizzato
Devi richiedere un aggiornamento delle informazioni sul consenso dell'utente a ogni lancio dell'app, utilizzando requestConsentInfoUpdate()
prima di caricare un modulo.
Questo può determinare se l'utente deve o meno dare il consenso se non lo ha già fatto o se il consenso è scaduto.
consentInformation
quando presenti il modulo quando necessario.
Ecco un esempio di come controllare lo stato all'avvio dell'app:
Java
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.google.android.ump.ConsentForm; import com.google.android.ump.ConsentInformation; import com.google.android.ump.ConsentRequestParameters; import com.google.android.ump.FormError; import com.google.android.ump.UserMessagingPlatform; public class MainActivity extends AppCompatActivity { private ConsentInformation consentInformation; private ConsentForm consentForm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Set tag for under age of consent. false means users are not under // age. ConsentRequestParameters params = new ConsentRequestParameters .Builder() .setTagForUnderAgeOfConsent(false) .build(); consentInformation = UserMessagingPlatform.getConsentInformation(this); consentInformation.requestConsentInfoUpdate( this, params, new ConsentInformation.OnConsentInfoUpdateSuccessListener() { @Override public void onConsentInfoUpdateSuccess() { // The consent information state was updated. // You are now ready to check if a form is available. } }, new ConsentInformation.OnConsentInfoUpdateFailureListener() { @Override public void onConsentInfoUpdateFailure(FormError formError) { // Handle the error. } }); } }
Kotlin
Coming soon.
Carica un modulo, se disponibile
Prima di visualizzare un modulo, devi determinare se è disponibile. I moduli non disponibili possono essere dovuti al fatto che l'utente ha attivato il monitoraggio degli annunci con limitazioni o perché sono stati taggati come minorenni.
Per controllare la disponibilità di un modulo, utilizza
the isConsentFormAvailable()
method on the ConsentInformation
instance hai creato prima.
Quindi, aggiungi un metodo del wrapper per caricare il modulo:
Java
... consentInformation.requestConsentInfoUpdate( this, params, new ConsentInformation.OnConsentInfoUpdateSuccessListener() { @Override public void onConsentInfoUpdateSuccess() { // The consent information state was updated. // You are now ready to check if a form is available. if (consentInformation.isConsentFormAvailable()) { loadForm(); } } }, new ConsentInformation.OnConsentInfoUpdateFailureListener() { @Override public void onConsentInfoUpdateFailure(FormError formError) { // Handle the error. } }); } public void loadForm() { } }
Kotlin
Coming soon.
Per caricare il modulo, utilizza the static loadConsentForm()
method on the UserMessagingPlatform
class.
Java
public void loadForm() { // Loads a consent form. Must be called on the main thread. UserMessagingPlatform.loadConsentForm( this, new UserMessagingPlatform.OnConsentFormLoadSuccessListener() { @Override public void onConsentFormLoadSuccess(ConsentForm consentForm) { MainActivity.this.consentForm = consentForm; } }, new UserMessagingPlatform.OnConsentFormLoadFailureListener() { @Override public void onConsentFormLoadFailure(FormError formError) { // Handle the error } } ); }
Kotlin
Coming soon.
Presenta il modulo, se necessario
Dopo aver determinato la disponibilità del modulo e averlo caricato, utilizza il metodoshow()
sull'istanzaConsentForm
per presentare il modulo.
Usa l'consentInformation
oggetto di prima per controllareconsent status e aggiornare il metodoloadForm()
:
Java
public void loadForm() { UserMessagingPlatform.loadConsentForm( this, new UserMessagingPlatform.OnConsentFormLoadSuccessListener() { @Override public void onConsentFormLoadSuccess(ConsentForm consentForm) { MainActivity.this.consentForm = consentForm; if(consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.REQUIRED) { consentForm.show( MainActivity.this, new ConsentForm.OnConsentFormDismissedListener() { @Override public void onConsentFormDismissed(@Nullable FormError formError) { // Handle dismissal by reloading form. loadForm(); } }); } } }, new UserMessagingPlatform.OnConsentFormLoadFailureListener() { @Override public void onConsentFormLoadFailure(FormError formError) { /// Handle Error. } } ); }
Kotlin
Coming soon.
Se devi eseguire azioni dopo che l'utente ha effettuato una scelta o ha ignorato il modulo, inserisci questa logica nel gestore di completamento o nel callback per il modulo.
Test
Forza un'area geografica
L'SDK UMP fornisce un modo per testare il comportamento della tua app come se il dispositivo si trovasse
nel SEE o nel Regno Unito utilizzando the setDebugGeography
method on ConsentDebugSettings.Builder
.
Per utilizzare la funzionalità di debug, devi fornire l'ID hash del dispositivo di test nelle impostazioni di debug dell'app. Se chiami
requestConsentInfoUpdate()
senza impostare questo valore, la tua app
registra l'hash dell'ID richiesto quando viene eseguito.
Java
ConsentDebugSettings debugSettings = new ConsentDebugSettings.Builder(this) .setDebugGeography(ConsentDebugSettings .DebugGeography .DEBUG_GEOGRAPHY_EEA) .addTestDeviceHashedId("TEST-DEVICE-HASHED-ID") .build(); ConsentRequestParameters params = new ConsentRequestParameters .Builder() .setConsentDebugSettings(debugSettings) .build(); consentInformation = UserMessagingPlatform.getConsentInformation(this); consentInformation.requestConsentInfoUpdate(this, params, new ConsentInformation.OnConsentInfoUpdateSuccessListener() { @Override public void onConsentInfoUpdateSuccess() { // The consent information state was updated. // You are now ready to check if a form is available. } }, new ConsentInformation.OnConsentInfoUpdateFailureListener() { @Override public void onConsentInfoUpdateFailure(FormError formError) { // Handle the error. } });
Kotlin
Coming soon.
Con DebugGeography
, hai la possibilità di
forzare l'area geografica a una di queste opzioni:
Regione di debug | Descrizione |
---|---|
DEBUG_GEOGRAPHY_DISABLED |
Regione di debug disabilitata. |
DEBUG_GEOGRAPHY_EEA |
La posizione geografica viene visualizzata nel SEE per i dispositivi di debug. |
DEBUG_GEOGRAPHY_NOT_EEA |
Per i dispositivi di debug, la geografia è indicata come non nel SEE. |
Tieni presente che le impostazioni di debug funzionano solo su dispositivi di test. Non è necessario aggiungere gli emulatori all'elenco degli ID dispositivo perché i test sono già attivi per impostazione predefinita.
Reimposta stato del consenso
Durante il test della tua app con l'SDK UMP, potrebbe essere utile reimpostare lo stato dell'SDK in modo da poter simulare la prima esperienza di installazione di un utente.
L'SDK fornisce il reset()
metodo.
Java
consentInformation.reset();
Kotlin
consentInformation.reset()
Devi anche chiamare reset()
se decidi di rimuovere completamente
l'SDK UMP dal tuo progetto.