Compartilhe seu feedback e ajude a melhorar o roteiro do SDK dos anúncios para dispositivos móveis do Google. Participe da pesquisa anual do SDK dos anúncios para dispositivos móveis do Google de 2023 até 5 de maio de 2023.

Vamos começar

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

De acordo com a Política de consentimento para usuários da União Europeia do Google, você precisa divulgar determinadas informações aos seus usuários no Espaço Econômico Europeu (EEE) e no Reino Unido e obter o consentimento deles para usar cookies ou outro armazenamento local, quando exigido por lei, e usar dados pessoais, como AdID, para veicular anúncios. Essa política reflete os requisitos da Diretiva de privacidade eletrônica da UE e do Regulamento geral de proteção de dados (GDPR).

Para ajudar os editores a cumprir as obrigações determinadas por essa política, o Google oferece o SDK da plataforma de mensagens aos usuários (UMP). O SDK do UMP foi atualizado para oferecer suporte aos padrões mais recentes do IAB. Todas essas configurações agora podem ser processadas com facilidade na AdMob privacidade e nas mensagens.

Pré-requisitos

Tipos de mensagem do usuário

Consulte Tipos de mensagens do usuário para ver uma lista completa de mensagens com suporte. Para ver instruções específicas sobre como implementar cada tipo de mensagem, consulte a barra de navegação à esquerda.

Instalar com o Gradle

Se você estiver usando o SDK dos anúncios para dispositivos móveis do Google versão 19.8.0 ou mais recente, o SDK do UMP está incluído no pacote. Se você estiver usando uma versão anterior do SDK dos anúncios para dispositivos móveis, inclua o SDK da UMP no build.gradle do app da seguinte maneira:

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'
}

Depois de fazer as mudanças no build.gradle do app, sincronize seu projeto com os arquivos do Gradle.

Em seguida, encontre o ID do app e adicione ao seu 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>

Determinar se uma mensagem precisa ser exibida

Solicite uma atualização das informações de consentimento do usuário a cada inicialização do app usando requestConsentInfoUpdate() antes de carregar um formulário. Isso pode determinar se o usuário precisa ou não consentir, caso ainda não tenha feito isso ou se o consentimento tiver expirado.

Use as informações armazenadas no objeto consentInformation ao apresentar o formulário quando necessário.

Veja um exemplo de como verificar o status na inicialização do 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.

Carregar um formulário, se disponível

Antes de exibir um formulário, você precisa determinar se ele está disponível. Isso pode acontecer quando o usuário ativa o rastreamento de anúncios limitado ou quando você os marcou como abaixo da idade de consentimento.

Para verificar a disponibilidade de um formulário, use the isConsentFormAvailable() method on the ConsentInformation instance que você criou anteriormente.

Em seguida, adicione um método wrapper para carregar o formulário:

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.

Para carregar o formulário, use 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.

Apresentar o formulário, se necessário

Depois de determinar a disponibilidade do formulário e carregá-lo, use o métodoshow() na instância ConsentForm para apresentá-lo.

Use o objeto consentInformation de antes para conferir o consent status e atualizar o métodoloadForm() :

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 você precisar realizar alguma ação após o usuário ter escolhido ou dispensado o formulário, coloque essa lógica no gerenciador de conclusão ou no callback do formulário.

Teste

Forçar uma região geográfica

O SDK do UMP oferece uma maneira de testar o comportamento do app como se o dispositivo estivesse localizado no EEE ou no Reino Unido usando the setDebugGeography method on ConsentDebugSettings.Builder.

É necessário fornecer o ID de hash do dispositivo de teste nas configurações de depuração do app para usar a funcionalidade de depuração. Se você chamar requestConsentInfoUpdate() sem definir esse valor, o app registrará o hash de ID necessário quando executado.

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.

Com o DebugGeography, você tem a opção de forçar a localização geográfica para uma destas opções:

Depurar região geográfica Descrição
DEBUG_GEOGRAPHY_DISABLED Região de depuração desativada.
DEBUG_GEOGRAPHY_EEA A região geográfica aparece como no EEE para dispositivos de depuração.
DEBUG_GEOGRAPHY_NOT_EEA A região geográfica aparece como se não estivesse no EEE para dispositivos de depuração.

As configurações de depuração só funcionam em dispositivos de teste. Os emuladores não precisam ser adicionados à lista de IDs de dispositivo porque já têm os testes ativados por padrão.

Ao testar seu app com o SDK da UMP, pode ser útil redefinir o estado do SDK para que você possa simular a primeira experiência de instalação de um usuário. O SDK fornece o reset() método para fazer isso.

Java

consentInformation.reset();

Kotlin

consentInformation.reset()

Também é preciso chamar reset() se você decidir remover o SDK da UMP completamente do seu projeto.