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". Você pode conferir uma implementação funcional do IMA com o SDK da UMP nos apps de exemplo da UMP em Objective-C ou Swift.
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 de anúncios de mídia interativa definido no seu projeto.
Para mais detalhes, consulte Sobre privacidade e mensagens.
Importar o SDK
O SDK da UMP não está incluído como uma dependência do SDK do IMA. Por isso, você precisa adicioná-lo explicitamente.
CocoaPods (preferencial)
A maneira mais fácil de importar o SDK para um projeto do iOS é usar CocoaPods. Abra o Podfile do projeto e adicione esta linha ao destino do app:
pod 'GoogleUserMessagingPlatform'
Em seguida, execute o comando:
pod install --repo-updateSe você não conhece o CocoaPods, consulte Usar o CocoaPods para saber como criar e usar Podfiles.
Gerenciador de pacotes do Swift
O SDK da UMP também oferece suporte ao Gerenciador de pacotes do Swift. Siga estas etapas para importar o pacote do Swift.
No Xcode, instale o pacote Swift do SDK da UMP acessando File > Add Packages….
No comando que aparece, pesquise o repositório do GitHub do pacote Swift do SDK da UMP:
https://github.com/googleads/swift-package-manager-google-user-messaging-platform.gitSelecione a versão do pacote Swift do SDK da UMP que você quer usar. Para novos projetos, recomendamos usar a opção Up to Next Major Version.
O Xcode resolve as dependências do pacote e faz o download delas em segundo plano. Para mais detalhes sobre como adicionar dependências de pacote, consulte o artigo da Apple.
Adicionar o ID do aplicativo
Você encontra o ID do aplicativo na
interface do Ad Manager.
Adicione o ID ao seu
Info.plist
com o seguinte snippet de código:
<key>UMPApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
Receber as informações de consentimento do usuário
Você precisa solicitar uma atualização das informações de consentimento do usuário a cada inicialização do app
usando
requestConsentInfoUpdateWithParameters:completionHandler:. 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.
Swift
// Requesting an update to consent information should be called on every app launch.
ConsentInformation.shared.requestConsentInfoUpdate(with: parameters) {
requestConsentError in
// ...
}
Objective-C
// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
// ...
}];
Carregar e apresentar o formulário de mensagem de privacidade
Depois de receber o status de consentimento mais atualizado, chame
loadAndPresentIfRequiredFromViewController:completionHandler: 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.
Swift
try await ConsentForm.loadAndPresentIfRequired(from: viewController)
Objective-C
[UMPConsentForm
loadAndPresentIfRequiredFromViewController:viewController
completionHandler:^(NSError *_Nullable loadAndPresentError) {
// Consent gathering process is complete.
}];
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
requestConsentInfoUpdateWithParameters:completionHandler:, verifique
UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus 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.
Swift
var isPrivacyOptionsRequired: Bool {
return ConsentInformation.shared.privacyOptionsRequirementStatus == .required
}
Objective-C
- (BOOL)isPrivacyOptionsRequired {
return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
UMPPrivacyOptionsRequirementStatusRequired;
}
- (void)gatherConsentFromConsentPresentationViewController:(UIViewController *)viewController
consentGatheringComplete:
(void (^)(NSError *_Nullable))consentGatheringComplete {
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Use NO constant to indicate that the user is not under age.
parameters.tagForUnderAgeOfConsent = NO;
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
// Uncomment the following line to simulate a consent request from users in the
// European Economic Area (EEA) for testing purposes.
// debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
// ...
}];
}
- (void)loadAndPresentIfRequiredFromViewController:(UIViewController *)viewController
completionHandler:(void (^)(NSError *_Nullable))completionHandler {
[UMPConsentForm
loadAndPresentIfRequiredFromViewController:viewController
completionHandler:^(NSError *_Nullable loadAndPresentError) {
// Consent gathering process is complete.
}];
}
- (void)presentPrivacyOptionsFormFromViewController:(UIViewController *)viewController
completionHandler:
(void (^)(NSError *_Nullable))completionHandler {
[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
completionHandler:completionHandler];
}
@end
Para conferir a lista completa de status de requisitos de opções de privacidade, consulte
UMPPrivacyOptionsRequirementStatus.
Apresentar o formulário de opções de privacidade
Quando o usuário interage com o elemento, apresente o formulário de opções de privacidade:
Swift
ConsentForm.presentPrivacyOptionsForm(
from: viewController, completionHandler: completionHandler)
Objective-C
[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
completionHandler:completionHandler];
Solicitar anúncios com o consentimento do usuário
Antes de solicitar anúncios, use
UMPConsentInformation.sharedInstance.canRequestAds para verificar se você
recebeu o consentimento do usuário:
Swift
ConsentInformation.shared.canRequestAds
Objective-C
UMPConsentInformation.sharedInstance.canRequestAds;
A seguir, listamos os locais para verificar se você pode solicitar anúncios ao coletar o consentimento:
- Depois que o SDK da UMP coleta o consentimento na sessão atual.
- Imediatamente depois de chamar
requestConsentInfoUpdateWithParameters:completionHandler:. 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 você pode 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
UMPConsentInformation.sharedInstance.canRequestAds depois de coletar o consentimento e chamar
requestConsentInfoUpdateWithParameters:completionHandler:, verifique se a lógica impede solicitações de anúncios redundantes que
podem resultar em ambas as verificações retornando true. 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.
- Ligue para a
requestConsentInfoUpdateWithParameters:completionHandler:. 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:
<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]Copie o ID do dispositivo de teste para a área de transferência.
Modifique o código para chamar
UMPDebugSettings().testDeviceIdentifierse transmita uma lista dos IDs dos dispositivos de teste.Swift
let parameters = RequestParameters() let debugSettings = DebugSettings() debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"] parameters.debugSettings = debugSettings // Include the UMPRequestParameters in your consent request. ConsentInformation.shared.requestConsentInfoUpdate( with: parameters, completionHandler: { error in // ... })Objective-C
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init]; UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init]; debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ]; parameters.debugSettings = debugSettings; // Include the UMPRequestParameters in your consent request. [UMPConsentInformation.sharedInstance requestConsentInfoUpdateWithParameters:parameters completionHandler:^(NSError *_Nullable error){ // ... }];
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 UMPDebugGeography. As configurações de depuração só funcionam em dispositivos de teste.
Swift
let parameters = RequestParameters()
let debugSettings = DebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings
// Include the UMPRequestParameters in your consent request.
ConsentInformation.shared.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;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable error){
// ...
}];
Redefinir o estado de consentimento
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 fornece o método reset para fazer isso.
Swift
ConsentInformation.shared.reset()
Objective-C
[UMPConsentInformation.sharedInstance reset];
Exemplos no GitHub
Confira um exemplo completo da integração do SDK da UMP abordada nesta página em Swift UmpExample e Objective-C UmpExample.