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.

Importar o SDK

CocoaPods (preferencial)

O SDK do UMP está incluído como uma dependência do SDK dos anúncios para dispositivos móveis do Google a partir do SDK dos anúncios para dispositivos móveis do Google 7.64.0.

A maneira mais fácil de importar o SDK em um projeto do iOS é usando o CocoaPods. Abra o Podfile do projeto e adicione esta linha ao destino do app:

pod 'Google-Mobile-Ads-SDK'

Em seguida, execute o comando:

pod install --repo-update

Se você não estiver familiarizado com o CocoaPods, consulte Como usar CocoaPods para detalhes sobre como criar e usar Podfiles.

Download manual

A outra maneira de importar o SDK é manualmente.

Fazer o download do SDK

Em seguida, arraste o framework para seu projeto do Xcode, selecionando Copy items, caso necessário.

Em seguida, inclua o framework em qualquer arquivo necessário usando:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

Atualizar seu Info.plist

Encontrar o ID do app e adicione ao Info.plist:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

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 requestConsentInfoUpdateWithParameters:completionHandler: 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.

Se necessário, você poderá apresentar o formulário depois.

Veja um exemplo de como verificar o status na inicialização do app:

Swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
   // Create a UMPRequestParameters object.
   let parameters = UMPRequestParameters()
   // Set tag for under age of consent. Here false means users are not under age.
   parameters.tagForUnderAgeOfConsent = false

   // Request an update to the consent information.
   UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
      with: parameters,
      completionHandler: { error in
        if error != nil {
           // Handle the error.
        } else {
           // The consent information state was updated.
           // You are now ready to check if a form is
           // available.
        }
       })
}

Objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Here NO means users are not under age.
parameters.tagForUnderAgeOfConsent = NO;

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error) {
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to check if a form is
                             // available.
                           }
                         }];
}

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 formStatus property on the UMPConsentInformation instance que você criou anteriormente.

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

Swift

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    withParameters: parameters,
    completionHandler: { [self] error in

      // The consent information has updated.
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to see if a form is available.
        let formStatus = UMPConsentInformation.sharedInstance.formStatus
        if formStatus == UMPFormStatus.available {
          loadForm()
        }
      }
    })
...
func loadForm() {

}

Objective-C

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError* _Nullable error) {

                           // The consent information has updated.
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to see if a form is available.
                             UMPFormStatus formStatus =
                                 UMPConsentInformation.sharedInstance
                                     .formStatus;
                             if (formStatus == UMPFormStatusAvailable) {
                               [self loadForm];
                             }
                           }
                         }];
...
- (void) loadForm {

}

Para carregar o formulário, use the static loadWithCompletionHandler: method on the UMPConsentForm class.

Swift

func loadForm() {
  // Loads a consent form. Must be called on the main thread.
  UMPConsentForm.load(
      withCompletionHandler: { form, loadError in
        if loadError != nil {
          // Handle the error
        } else {
          // Present the form
        }
      })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm
      loadWithCompletionHandler:^(UMPConsentForm *form, NSError *loadError) {
        if (loadError) {
          // Handle the error
        } else {
          // Present the form
        }
      }];
}

Apresentar o formulário, se necessário

Depois de determinar a disponibilidade do formulário e carregá-lo, use o métodopresentFromViewController:completionHandler: na instância UMPConsentForm para apresentá-lo.

Use o objeto UMPConsentInformation de antes para conferir o consent status e atualizar o métodoloadForm :

Swift

func loadForm() {
  UMPConsentForm.load(withCompletionHandler: { form, loadError in
    if loadError != nil {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
        form?.present(
            from: self,
            completionHandler: { dismissError in
              if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
                // App can start requesting ads.
              }
                // Handle dismissal by reloading form.
                loadForm();
            })
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm *form,
                                              NSError *loadError) {
    if (loadError) {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if (UMPConsentInformation.sharedInstance.consentStatus ==
          UMPConsentStatusRequired) {
        [form
            presentFromViewController:self
                    completionHandler:^(NSError *_Nullable dismissError) {
                      if (UMPConsentInformation.sharedInstance.consentStatus ==
                          UMPConsentStatusObtained) {
                        // App can start requesting ads.
                      }
                        // Handle dismissal by reloading form.
                        [self loadForm];
                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

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 debugGeography property of type UMPDebugGeography on UMPDebugSettings.

É 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 requestConsentInfoUpdateWithParameters:completionHandler: sem definir esse valor, o app registrará o hash de ID necessário quando executado.

Swift

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = UMPDebugGeography.EEA
parameters.debugSettings = debugSettings
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    with: parameters,
    completionHandler: { error in
      ...
    })

Objective-C

UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           ...
}];

Com o UMPDebugGeography, 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
UMPDebugGeographyDisabled Região de depuração desativada.
UMPDebugGeographyEEA A região geográfica aparece como no EEE para dispositivos de depuração.
UMPDebugGeographyNotEEA 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.

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

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