Pular para conteúdo

Primeiros Passos

Sob a Política de Consentimento de Usuários da UE do Google, você deve fazer certas divulgações aos seus usuários no Espaço Econômico Europeu (EEE) junto com o Reino Unido e obter seu consentimento para usar cookies ou outro armazenamento local, onde legalmente exigido, e para usar dados pessoais (como o AdID) para veicular anúncios. Esta política reflete os requisitos da Diretiva ePrivacy da UE e do Regulamento Geral sobre a Proteção de Dados (GDPR).

Para apoiar os editores no cumprimento de seus deveres sob esta política, o Google oferece o SDK da User Messaging Platform (UMP). O SDK da UMP foi atualizado para suportar os padrões IAB mais recentes. Todas essas configurações agora podem ser convenientemente gerenciadas no menu Privacidade e Mensagens do AdMob.

Este documento é baseado em:

Pré-requisitos

Criar um tipo de mensagem

Crie mensagens de usuário com um dos tipos de mensagens de usuário disponíveis na aba Privacidade e Mensagens da sua conta do AdMob. O SDK do UMP tenta exibir uma mensagem de usuário criada a partir do ID do Aplicativo AdMob configurado no seu projeto. Se nenhuma mensagem estiver configurada para o seu aplicativo, o SDK retornará um erro.

Para mais detalhes, consulte Sobre privacidade e mensagens.

Determinar se uma mensagem precisa ser exibida

Você deve solicitar uma atualização das informações de consentimento do usuário a cada inicialização do aplicativo, usando update() antes de carregar um formulário. Isso pode determinar se o seu usuário precisa ou não fornecer consentimento se ainda não o fez ou se o consentimento dele expirou.

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

Warning

O uso de formas alternativas de verificar o status de consentimento — como verificar um cache que seu aplicativo utiliza ou procurar por uma string de consentimento no armazenamento — é fortemente desencorajado, pois o conjunto de parceiros de tecnologia de anúncios pode ter mudado desde o último consentimento do usuário.

Aqui está um exemplo de como verificar o status na inicialização do aplicativo:

extends Node

func _ready():
    var request := ConsentRequestParameters.new()
    # Set tag for underage of consent. false means users are not underage.
    request.tag_for_under_age_of_consent = false
    UserMessagingPlatform.consent_information.update(request, _on_consent_info_updated_success, _on_consent_info_updated_failure)

func _on_consent_info_updated_success():
    # The consent information state was updated.
    # You are now ready to check if a form is available.
    pass

func _on_consent_info_updated_failure(form_error : FormError):
    # Handle the error.
    pass
using Godot;
using PoingStudios.AdMob.Api;
using PoingStudios.AdMob.Ump.Api;
using PoingStudios.AdMob.Ump.Core;

public partial class UmpExample : Node
{
    public override void _Ready()
    {
        var request = new ConsentRequestParameters();
        // Set tag for underage of consent. false means users are not underage.
        request.TagForUnderAgeOfConsent = false;
        UserMessagingPlatform.ConsentInformation.Update(request, OnConsentInfoUpdatedSuccess, OnConsentInfoUpdatedFailure);
    }

    private void OnConsentInfoUpdatedSuccess()
    {
        // The consent information state was updated.
        // You are now ready to check if a form is available.
    }

    private void OnConsentInfoUpdatedFailure(FormError formError)
    {
        // Handle the error.
    }
}

Carregar um formulário se disponível

Antes de exibir um formulário, primeiro você precisa determinar se um está disponível. Formulários indisponíveis podem ser devidos ao fato do usuário habilitar o rastreamento limitado de anúncios ou se você os marcou como abaixo da idade de consentimento.

Para verificar a disponibilidade de um formulário, use a função get_is_consent_form_available() na instância estática consent_information da classe UserMessagingPlatform.

Em seguida, adicione uma função wrapper para carregar o formulário:

#...
func _on_consent_info_updated_success():
    # The consent information state was updated.
    # You are now ready to check if a form is available.
    if UserMessagingPlatform.consent_information.get_is_consent_form_available():
        load_form()

func _on_consent_info_updated_failure(form_error : FormError):
    # Handle the error.
    pass

func load_form():
    pass
//...
private void OnConsentInfoUpdatedSuccess()
{
    // The consent information state was updated.
    // You are now ready to check if a form is available.
    if (UserMessagingPlatform.ConsentInformation.GetIsConsentFormAvailable())
        LoadForm();
}

private void OnConsentInfoUpdatedFailure(FormError formError)
{
    // Handle the error.
}

private void LoadForm()
{
}

Para carregar o formulário, use a função estática load_consent_form() na classe UserMessagingPlatform.

var _consent_form : ConsentForm

func load_form():
    UserMessagingPlatform.load_consent_form(_on_consent_form_load_success, _on_consent_form_load_failure)

func _on_consent_form_load_success(consent_form : ConsentForm):
    _consent_form = consent_form

func _on_consent_form_load_failure(form_error : FormError):
    # Handle the error.
    pass
private ConsentForm _consentForm;

private void LoadForm()
{
    UserMessagingPlatform.LoadConsentForm(OnConsentFormLoadSuccess, OnConsentFormLoadFailure);
}

private void OnConsentFormLoadSuccess(ConsentForm consentForm)
{
    _consentForm = consentForm;
}

private void OnConsentFormLoadFailure(FormError formError)
{
    // Handle the error.
}

Apresentar o formulário se necessário

Depois de determinar a disponibilidade do formulário e carregá-lo, use a função show() na instância ConsentForm para apresentar o formulário.

Use a instância estática consent_information da classe UserMessagingPlatform para verificar o status do consentimento e atualizar sua função load_form():

var _consent_form : ConsentForm

func load_form():
    UserMessagingPlatform.load_consent_form(_on_consent_form_load_success, _on_consent_form_load_failure)

func _on_consent_form_load_success(consent_form : ConsentForm):
    _consent_form = consent_form
    if UserMessagingPlatform.consent_information.get_consent_status() == UserMessagingPlatform.consent_information.ConsentStatus.REQUIRED:
        consent_form.show(_on_consent_form_dismissed)

func _on_consent_form_load_failure(form_error : FormError):
    # Handle the error.
    pass

func _on_consent_form_dismissed(form_error : FormError):
    if UserMessagingPlatform.consent_information.get_consent_status() == UserMessagingPlatform.consent_information.ConsentStatus.OBTAINED:
        # App can start requesting ads.
        pass
    # Handle dismissal by reloading form
    load_form()
private ConsentForm _consentForm;

private void LoadForm()
{
    UserMessagingPlatform.LoadConsentForm(OnConsentFormLoadSuccess, OnConsentFormLoadFailure);
}

private void OnConsentFormLoadSuccess(ConsentForm consentForm)
{
    _consentForm = consentForm;
    if (UserMessagingPlatform.ConsentInformation.GetConsentStatus() == ConsentStatus.Values.Required)
        consentForm.Show(OnConsentFormDismissed);
}

private void OnConsentFormLoadFailure(FormError formError)
{
    // Handle the error.
}

private void OnConsentFormDismissed(FormError formError)
{
    if (UserMessagingPlatform.ConsentInformation.GetConsentStatus() == ConsentStatus.Values.Obtained)
    {
        // App can start requesting ads.
    }
    // Handle dismissal by reloading form
    LoadForm();
}

Se você precisar executar qualquer ação após o usuário fazer uma escolha ou fechar o formulário, coloque essa lógica no manipulador de conclusão ou callback do seu formulário.

Testes

Forçar uma geografia

O SDK do UMP fornece uma maneira de testar o comportamento do seu aplicativo como se o dispositivo estivesse localizado no EEE ou no Reino Unido usando a propriedade debug_geography em ConsentDebugSettings.

Você deve fornecer o ID com hash do seu dispositivo de teste nas configurações de depuração do seu aplicativo para usar a funcionalidade de depuração. Se você chamar UserMessagingPlatform.consent_information.update() sem definir este valor, seu aplicativo registrará o hash do ID necessário quando executado.

extends Node

func _ready():
    var request := ConsentRequestParameters.new()
    var consent_debug_settings := ConsentDebugSettings.new()
    consent_debug_settings.debug_geography = DebugGeography.Values.EEA
    consent_debug_settings.test_device_hashed_ids.append("test_device_hashed_id")
    request.consent_debug_settings = consent_debug_settings

    UserMessagingPlatform.consent_information.update(request, _on_consent_info_updated_success, _on_consent_info_updated_failure)

func _on_consent_info_updated_success():
    # The consent information state was updated.
    # You are now ready to check if a form is available.
    pass

func _on_consent_info_updated_failure(form_error : FormError):
    # Handle the error.
    pass
using Godot;
using PoingStudios.AdMob.Api;
using PoingStudios.AdMob.Ump.Api;
using PoingStudios.AdMob.Ump.Core;

public partial class UmpExample : Node
{
    public override void _Ready()
    {
        var request = new ConsentRequestParameters();
        var consentDebugSettings = new ConsentDebugSettings();
        consentDebugSettings.DebugGeography = DebugGeography.Eea;
        consentDebugSettings.TestDeviceHashedIds.Add("test_device_hashed_id");
        request.ConsentDebugSettings = consentDebugSettings;

        UserMessagingPlatform.ConsentInformation.Update(request, OnConsentInfoUpdatedSuccess, OnConsentInfoUpdatedFailure);
    }

    private void OnConsentInfoUpdatedSuccess()
    {
        // The consent information state was updated.
        // You are now ready to check if a form is available.
    }

    private void OnConsentInfoUpdatedFailure(FormError formError)
    {
        // Handle the error.
    }
}

Com o enum DebugGeography.Values, você tem a opção de forçar a geografia para uma destas opções:

DebugGeography Description
DISABLED Debug geography disabled.
EEA Geography appears as in EEA for debug devices.
NOT_EEA Geography appears as not in the EEA for debug devices.

Observe que as configurações de depuração funcionam apenas em dispositivos de teste. Os emuladores não precisam ser adicionados à sua lista de IDs de dispositivos, pois já possuem os testes ativados por padrão.

Redefinir o estado de consentimento

Ao testar seu aplicativo com o SDK do UMP, você pode achar útil redefinir o estado do SDK para poder simular a experiência de primeira instalação de um usuário. O SDK fornece a função reset() para fazer isso.

UserMessagingPlatform.consent_information.reset()
UserMessagingPlatform.ConsentInformation.Reset();

Você também deve chamar reset() se decidir remover completamente o SDK do UMP do seu projeto.

Warning

Esta função destina-se a ser usada apenas para fins de teste. Você não deve chamar reset() no código de produção.