Como solicitar o consentimento de usuários europeus

Pré-requisitos

Leia o artigo Começar com a versão 1.3.0 do plug-in GMA do Flutter, que oferece suporte ao SDK da plataforma de mensagens aos usuários.

Leia Como os requisitos do IAB afetam as Mensagens de consentimento para a União Europeia.

Introdução

O SDK da UMP fornece ferramentas para que os editores solicitem consentimento para anúncios personalizados, além de atender aos requisitos da App Tracking Transparency (ATT) da Apple. Os editores podem usar o SDK da UMP para processar uma ou ambas essas solicitações mostrando um único formulário, já que toda a configuração acontece em Privacidade e mensagens do Ad Manager.

De acordo com a Política de consentimento de usuários da União Europeia do Google, é necessário divulgar algumas informações aos seus usuários no Espaço Econômico Europeu (EEE) e no Reino Unido, além de receber o consentimento deles para usar cookies ou outro armazenamento local, quando exigido por lei, e usar dados pessoais (como ID de publicidade) 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, na sigla em inglês). O SDK da UMP foi atualizado para ser compatível com os padrões mais recentes do IAB. Também simplificamos o processo de configuração de formulários de consentimento e listagem de parceiros de publicidade. Todas essas configurações agora podem ser processadas de maneira conveniente em Privacidade e mensagens do Ad Manager.

Este guia explica como instalar o SDK, implementar as soluções do IAB e ativar os recursos de teste.

App Tracking Transparency (somente iOS)

Se você planeja usar o SDK da UMP para atender aos requisitos da App Tracking Transparency da Apple, crie, configure e publique a mensagem da ATT usando Privacidade e mensagens do Ad Manager.

Para que o SDK da UMP mostre uma mensagem de alerta personalizada, atualize o Info.plist para adicionar a chave NSUserTrackingUsageDescription com uma string de mensagem personalizada descrevendo o uso.

<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>

A descrição de uso aparece como parte da caixa de diálogo do ATT quando você apresenta o formulário de consentimento:

Em seguida, vincule o framework AppTrackingTransparency:

Durante o teste, lembre-se de que, de acordo com os requisitos da Apple, a caixa de diálogo ATT do IDFA vai aparecer apenas uma vez, porque requestTrackingAuthorization: é uma solicitação única. Para que o alerta seja exibido uma segunda vez, é necessário desinstalar e reinstalar o app no dispositivo de teste.

Como usar o SDK

O SDK foi projetado para ser usado de maneira linear. As etapas para usar o SDK são:

  1. Solicite as informações de consentimento mais recentes.
  2. Verifique se o consentimento é necessário.
  3. Verifique se um formulário está disponível e, se estiver, carregue-o.
  4. Apresente o formulário.
  5. Ofereça aos usuários um meio para alterar o consentimento.

Recomendamos que você solicite uma atualização das informações de consentimento a cada lançamento de app. Isso vai determinar se o usuário precisa ou não dar o consentimento.

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    // The consent information state was updated.
    // You are now ready to check if a form is available.
  },
  (FormError error) {
    // Handle the error
  },
);

Carregar um formulário, se disponível

Os formulários para obter o consentimento são criados na Ad Manager interface. Depois de determinar que você solicitará o consentimento do usuário, a próxima etapa é determinar se um formulário está disponível. Há vários motivos para um formulário não estar disponível, como:

  • O usuário ativou o limite de rastreamento de anúncios.
  • Você marcou o usuário como abaixo da idade de consentimento.

Para verificar se um formulário está disponível, use o método isConsentFormAvailable() na instância ConsentInformation. Adicione um método wrapper para carregar um formulário:

final params = ConsentRequestParameters();
ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () async {
    if (await ConsentInformation.instance.isConsentFormAvailable()) {
      loadForm();
    }
  },
  (FormError error) {
    // Handle the error
  },
);

Para carregar o formulário, você usará o método estático loadConsentForm() na classe ConsentForm. Altere o método loadForm() da seguinte maneira:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      // Present the form
    },
    (FormError formError) {
      // Handle the error
    },
  );
}

Apresente o formulário, se necessário

Para apresentar o formulário de consentimento, use o método show() na classe ConsentForm. Você precisa determinar se o usuário precisa de consentimento antes de apresentar o formulário. Para verificar se o consentimento é necessário, chame getConsentStatus() no objeto ConsentInformation, que retorna um tipo enumerado do tipo ConsentStatus. Há quatro valores possíveis para ConsentStatus:

  • unknown: status de consentimento desconhecido.
  • required: o consentimento do usuário é obrigatório, mas ainda não foi obtido.
  • notRequired: o consentimento do usuário não é necessário. Por exemplo, o usuário não está no EEE ou no Reino Unido.
  • obtained: o usuário consentiu. Personalização não definida.

Altere o método loadForm da seguinte maneira:

void loadForm() {
  ConsentForm.loadConsentForm(
    (ConsentForm consentForm) async {
      var status = await ConsentInformation.instance.getConsentStatus();
      if (status == ConsentStatus.required) {
        consentForm.show(
          (FormError formError) {
            // Handle dismissal by reloading form
            loadForm();
          },
        );
      }
    },
    (formError) {
      // Handle the error
    },
  );
}

Se o consentimento não for necessário, mantenha uma referência ao formulário para que o usuário possa alterar o status de consentimento.

testes

Forçar uma localização geográfica

O SDK da UMP oferece uma maneira de testar o comportamento do seu app como se o dispositivo estivesse localizado no EEE usando ConsentDebugSettings.debugGeography.

Será necessário fornecer o ID com 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, seu app registrará o hash de ID necessário quando executado.

ConsentDebugSettings debugSettings = ConsentDebugSettings(
  debugGeography: DebugGeography.debugGeographyEea,
  testIdentifiers: ['TEST-DEVICE-HASHED-ID']);

ConsentRequestParameters params = ConsentRequestParameters(
  consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(
  params,
  () {},
  (error) {});

Para forçar o SDK a tratar o dispositivo como se ele não estivesse no EEE ou no Reino Unido, use DebugGeography.debugGeographyNotEea. As configurações de depuração só funcionam em dispositivos de teste. Os emuladores não precisam ser adicionados à lista de IDs de dispositivos porque têm 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 método reset para fazer isso.

ConsentInformation.instance.reset();

Chame a redefinição se você decidir remover o SDK da UMP completamente do projeto.

Mediação

Se você usa a mediação, trate o consentimento para seus parceiros de mediação de forma diferente com base no framework escolhido para usar no seu app. O Google oferece suporte à Estrutura de consentimento do IAB, mas também permite que você tenha sua própria solução de consentimento personalizada. Confira abaixo os detalhes sobre como lidar com a mediação em cada uma dessas opções. Saiba mais sobre nossa solução de consentimento.

.

Nem o SDK da UMP nem o SDK dos anúncios para dispositivos móveis encaminham informações de consentimento para parceiros de mediação. Em vez disso, ao usar a solução do IAB, o SDK da UMP grava as informações do status de consentimento no armazenamento local. É responsabilidade do SDK de cada parceiro de mediação ler as chaves apropriadas. Verifique com as redes de terceiros se elas são compatíveis com a solução do IAB.

Ao usar uma solução de consentimento personalizada, é sua responsabilidade notificar os SDKs de terceiros sobre o status de consentimento do seu app. Cada rede de mediação tem as próprias APIs para lidar com o consentimento, que estão documentadas para Android e iOS.

Consulte Como usar APIs específicas de rede para saber como chamar essas APIs do Dart.

O comportamento padrão do SDK dos anúncios para dispositivos móveis do Google é veicular anúncios personalizados. Se um usuário consentiu em receber somente anúncios não personalizados, você pode configurar um objeto AdManagerAdRequest com o seguinte código para especificar que somente esse tipo de anúncio deve ser solicitado:

final AdManagerAdRequest = AdManagerAdRequest(nonPersonalizedAds: true);

A Política de consentimento para usuários da União Europeia do Google exige que você solicite o consentimento para a lista completa de provedores de tecnologia de anúncio configurados para seus IDs de editor antes de exibir anúncios personalizados, mesmo que você esteja usando uma solução de mediação terceirizada para enviar solicitações de anúncio ao Google.