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
- Conclua o Guia de primeiros passos.
- Configure suas mensagens na guia Privacidade e mensagens da sua AdMob conta. Para mais detalhes, consulte Sobre privacidade e mensagens,
- Se você estiver trabalhando em requisitos relacionados ao GDPR, leia Como os requisitos do IAB afetam as mensagens de consentimento da UE.
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.
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 aoInfo.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.
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.
Redefinir o estado de consentimento
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.