Configurar o SDK da plataforma de mensagens aos usuários (UMP, na sigla em inglês) do Google

O SDK da plataforma de mensagens de usuários (UMP) do Google é uma ferramenta de privacidade e mensagens que ajuda você a gerenciar as opções de privacidade. Para mais informações, consulte Sobre a página "Privacidade e mensagens".

Criar um tipo de mensagem

Crie mensagens de usuário com um dos tipos de mensagem de usuário disponíveis na guia Privacidade e mensagens da sua conta do Ad Manager. O SDK da UMP tenta mostrar uma mensagem de privacidade criada com o ID do aplicativo do Ad Manager definido no seu projeto.

Para mais detalhes, consulte Sobre privacidade e mensagens.

Você precisa solicitar uma atualização das informações de consentimento do usuário a cada inicialização do app usando requestConsentInfoUpdate(). Essa solicitação verifica o seguinte:

  • Se o consentimento é necessário. Por exemplo, o consentimento é necessário pela primeira vez ou a decisão de consentimento anterior expirou.
  • Se um ponto de entrada de opções de privacidade é necessário. Algumas mensagens de privacidade exigem que os apps permitam que os usuários modifiquem as opções de privacidade a qualquer momento.
@override
void initState() {
  super.initState();

  // Create a ConsentRequestParameters object.
  final params = ConsentRequestParameters();

  // Request an update to consent information on every app launch.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      // Called when consent information is successfully updated.
    },
    (FormError error) {
      // Called when there's an error updating consent information.
    },
  );
}

Carregar e apresentar o formulário de mensagem de privacidade

Depois de receber o status de consentimento mais atualizado, chame loadAndShowConsentFormIfRequired() para carregar todos os formulários necessários para coletar o consentimento do usuário. Após o carregamento, os formulários são apresentados imediatamente.

@override
void initState() {
  super.initState();

  // Create a ConsentRequestParameters object.
  final params = ConsentRequestParameters();

  // Request an update to consent information on every app launch.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
        if (loadAndShowError != null) {
          // Consent gathering failed.
        }

        // Consent has been gathered.
      });
    },
    (FormError error) {
      // Handle the error.
    },
  );
}

Opções de privacidade

Alguns formulários de mensagem de privacidade são apresentados em um ponto de entrada de opções de privacidade renderizado pelo editor, permitindo que os usuários gerenciem as opções de privacidade a qualquer momento. Para saber mais sobre qual mensagem é mostrada aos usuários no ponto de entrada de opções de privacidade, consulte Tipos de mensagem de usuário disponíveis.

Verificar se um ponto de entrada de opções de privacidade é necessário

Depois de chamar requestConsentInfoUpdate(), verifique getPrivacyOptionsRequirementStatus() para determinar se um ponto de entrada de opções de privacidade é necessário para seu app. Se um ponto de entrada for necessário, adicione um elemento da interface visível e interativo ao app que apresente o formulário de opções de privacidade. Se um ponto de entrada de privacidade não for necessário, configure o elemento de interface para não ser visível e interativo.

/// Helper variable to determine if the privacy options entry point is required.
Future<bool> isPrivacyOptionsRequired() async {
  return await ConsentInformation.instance
      .getPrivacyOptionsRequirementStatus() ==
      PrivacyOptionsRequirementStatus.required;
}

Para conferir a lista completa de status de requisitos de opções de privacidade, consulte PrivacyOptionsRequirementStatus.

Apresentar o formulário de opções de privacidade

Quando o usuário interagir com o elemento, apresente o formulário de opções de privacidade:

ConsentForm.showPrivacyOptionsForm((formError) {
  if (formError != null) {
    debugPrint("${formError.errorCode}: ${formError.message}");
  }
});

Solicitar anúncios com o consentimento do usuário

Antes de solicitar anúncios, use canRequestAds() para verificar se você recebeu o consentimento do usuário:

await ConsentInformation.instance.canRequestAds()

Confira a seguir os locais em que você pode verificar se é possível solicitar anúncios ao coletar o consentimento:

  • Depois que o SDK da UMP coletar o consentimento na sessão atual.
  • Imediatamente depois de chamar requestConsentInfoUpdate(). O SDK da UMP pode ter recebido o consentimento na sessão anterior do app.

Se ocorrer um erro durante o processo de coleta de consentimento, verifique se é possível solicitar anúncios. O SDK da UMP usa o status de consentimento da sessão anterior do app.

Evitar trabalho repetitivo na solicitação de anúncio

Ao verificar canRequestAds() depois de coletar o consentimento e depois de chamar requestConsentInfoUpdate(), verifique se a lógica impede solicitações de anúncios redundantes que podem resultar em true nas duas verificações. Por exemplo, com uma variável booleana.

Teste

Se você quiser testar a integração no app durante o desenvolvimento, siga estas etapas para registrar seu dispositivo de teste de maneira programática. Remova o código que define esses IDs de dispositivo de teste antes de lançar o app.

  1. Ligue para a requestConsentInfoUpdate().
  2. Verifique a saída do registro para uma mensagem semelhante ao exemplo a seguir, que mostra o ID do dispositivo e como adicioná-lo como um dispositivo de teste:

    Android

    Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231")
    to set this as a debug device.
    

    iOS

    <UMP SDK>To enable debug mode for this device,
    set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. Copie o ID do dispositivo de teste para a área de transferência.

  4. Modifique o código para chamar ConsentDebugSettings.testIdentifiers e transmita uma lista dos IDs dos dispositivos de teste.

    ConsentDebugSettings debugSettings = ConsentDebugSettings(
      testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
    );
    
    ConsentRequestParameters params =
        ConsentRequestParameters(consentDebugSettings: debugSettings);
    
    ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
      // ...
    };
    

Forçar uma região geográfica

O SDK da UMP oferece uma maneira de testar o comportamento do app como se o dispositivo estivesse localizado em várias regiões, como o Espaço Econômico Europeu (EEE), o Reino Unido (RU) e a Suíça, usando debugGeography. As configurações de depuração só funcionam em dispositivos de teste.

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

ConsentRequestParameters params =
    ConsentRequestParameters(consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
  // ...
};

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

ConsentInformation.instance.reset();

Exemplos no GitHub

Confira um exemplo completo da integração do SDK da UMP abordada nesta página em nossos exemplos do Flutter.