Condividi il tuo feedback e contribuisci a definire la roadmap di Google Mobile Ads SDK. Rispondi al sondaggio annuale per l'SDK Google Mobile Ads per il 2023 prima della sua chiusura il 5 maggio 2023.

Inizia

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

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.

Utilizza le informazioni archiviate nell'oggetto 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.

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.