O SDK da plataforma de mensagens de usuários (UMP) do Google é uma ferramenta de privacidade e mensagens para ajudar 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 do usuário com um dos tipos disponíveis na guia Privacidade e mensagens da sua conta da AdMob. O SDK da UMP tenta mostrar uma mensagem de privacidade criada com base no ID do aplicativo da AdMob definido no seu projeto.
Para mais detalhes, consulte Sobre privacidade e mensagens.
Importar o SDK
CocoaPods (preferencial)
A maneira mais fácil de importar o SDK para um projeto do iOS é usando o CocoaPods. Abra o Podfile do projeto e adicione esta linha ao destino do app:
pod 'GoogleUserMessagingPlatform'
Em seguida, execute o comando:
pod install --repo-update
Se você não conhece o CocoaPods, consulte Como usar o CocoaPods para saber como criar e usar arquivos Pod.
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 Swift.
No Xcode, instale o pacote Swift do SDK UMP acessando File > Add Packages….
No prompt exibido, pesquise o repositório do GitHub do pacote Swift do SDK da UMP:
https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
Selecione a versão do pacote Swift do SDK UMP que você quer usar. Para novos projetos, recomendamos usar a versão principal mais recente.
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.
Download manual
Outra maneira de importar o SDK é fazer isso manualmente.
Em seguida, arraste o framework para o projeto do Xcode, selecionando Copy items if needed.
Em seguida, inclua o framework em qualquer arquivo usando:
Swift
import UserMessagingPlatform
Objective-C
#include <UserMessagingPlatform/UserMessagingPlatform.h>
Adicionar o ID do aplicativo
Encontre o ID do aplicativo na
interface da AdMob.
Adicione o ID ao
Info.plist
com o seguinte snippet de código:
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
Coletar consentimento
Para coletar o consentimento, siga estas etapas:
- Solicitação das informações mais recentes de consentimento do usuário.
- Carregue e apresente um formulário de consentimento, se necessário.
Solicitação de informações de consentimento
Você precisa solicitar uma atualização das informações de consentimento do usuário em cada inicialização
do app usando
requestConsentInfoUpdate(with:completionHandler:)
. Essa solicitação verifica
o seguinte:
- Se o consentimento é obrigató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.
Carregar e apresentar um formulário de mensagem de privacidade, se necessário
Depois de receber o status de consentimento mais atualizado, chame
loadAndPresentIfRequired(from:)
para carregar os formulários necessários para
coletar o consentimento do usuário. Após o carregamento, os formulários são apresentados imediatamente.
O código abaixo demonstra como solicitar as informações de consentimento mais recentes do usuário. Se necessário, o código será carregado e apresentará um formulário de mensagem de privacidade:
Swift
// Requesting an update to consent information should be called on every app launch.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
requestConsentError in
guard requestConsentError == nil else {
return consentGatheringComplete(requestConsentError)
}
Task { @MainActor in
do {
try await UMPConsentForm.loadAndPresentIfRequired(from: viewController)
// Consent has been gathered.
consentGatheringComplete(nil)
} catch {
consentGatheringComplete(error)
}
}
}
SwiftUI
// Requesting an update to consent information should be called on every app launch.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
requestConsentError in
guard requestConsentError == nil else {
return consentGatheringComplete(requestConsentError)
}
Task { @MainActor in
do {
try await UMPConsentForm.loadAndPresentIfRequired(from: nil)
// Consent has been gathered.
consentGatheringComplete(nil)
} catch {
consentGatheringComplete(error)
}
}
}
Objective-C
// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
if (requestConsentError) {
consentGatheringComplete(requestConsentError);
} else {
[UMPConsentForm
loadAndPresentIfRequiredFromViewController:viewController
completionHandler:^(
NSError
*_Nullable loadAndPresentError) {
// Consent has been gathered.
consentGatheringComplete(
loadAndPresentError);
}];
}
}];
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 seus usuários veem no ponto de entrada das opções de privacidade, consulte Tipos de mensagem do usuário disponíveis.
Verificar se um ponto de entrada de opções de privacidade é necessário
Depois de chamar
requestConsentInfoUpdate(with:completionHandler:)
, verifique
UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus
para
determinar se um ponto de entrada de opções de privacidade é necessário para o app:
Swift
var isPrivacyOptionsRequired: Bool {
return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus == .required
}
Objective-C
- (BOOL)isPrivacyOptionsRequired {
return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
UMPPrivacyOptionsRequirementStatusRequired;
}
Adicionar um elemento visível ao app
Se um ponto de entrada de privacidade for necessário, adicione um elemento de 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 da interface para que ele não seja visível nem interativo.
Swift
self.privacySettingsButton.isEnabled =
GoogleMobileAdsConsentManager.shared.isPrivacyOptionsRequired
Objective-C
strongSelf.privacySettingsButton.enabled =
GoogleMobileAdsConsentManager.sharedInstance
.isPrivacyOptionsRequired;
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:
Swift
try await UMPConsentForm.presentPrivacyOptionsForm(from: viewController)
SwiftUI
try await UMPConsentForm.presentPrivacyOptionsForm(from: nil)
Objective-C
[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
completionHandler:completionHandler];
Solicitar anúncios
Antes de solicitar anúncios no seu app, verifique se você recebeu o consentimento
do usuário usando
UMPConsentInformation.sharedInstance.canRequestAds
. Há dois
lugares para verificar ao coletar o consentimento:
- Depois que o consentimento foi coletado na sessão atual.
- Imediatamente após chamar
requestConsentInfoUpdate(with:completionHandler:)
. É possível que o consentimento tenha sido concedido na sessão anterior. Como prática recomendada de latência, recomendamos não esperar a conclusão do callback para que você possa começar a carregar anúncios assim que possível após o lançamento do app.
Se ocorrer um erro durante o processo de coleta de consentimento, ainda será necessário verificar se você pode solicitar anúncios. O SDK do UMP usa o status de consentimento da sessão anterior.
O código a seguir verifica se você pode solicitar anúncios durante o processo de coleta de consentimento:
Swift
GoogleMobileAdsConsentManager.shared.gatherConsent(from: self) { [weak self] consentError in
guard let self else { return }
if let consentError {
// Consent gathering failed.
print("Error: \(consentError.localizedDescription)")
}
if GoogleMobileAdsConsentManager.shared.canRequestAds {
self.startGoogleMobileAdsSDK()
}
// ...
}
// This sample attempts to load ads using consent obtained in the previous session.
if GoogleMobileAdsConsentManager.shared.canRequestAds {
startGoogleMobileAdsSDK()
}
SwiftUI
GoogleMobileAdsConsentManager.shared.gatherConsent { consentError in
if let consentError {
// Consent gathering failed.
print("Error: \(consentError.localizedDescription)")
}
// Check if you can request ads in `startGoogleMobileAdsSDK` before initializing the
// Google Mobile Ads SDK.
GoogleMobileAdsConsentManager.shared.startGoogleMobileAdsSDK()
// ...
}
// This sample attempts to load ads using consent obtained in the previous session.
GoogleMobileAdsConsentManager.shared.startGoogleMobileAdsSDK()
Objective-C
[GoogleMobileAdsConsentManager.sharedInstance
gatherConsentFromConsentPresentationViewController:self
consentGatheringComplete:^(NSError *_Nullable consentError) {
if (consentError) {
// Consent gathering failed.
NSLog(@"Error: %@", consentError.localizedDescription);
}
__strong __typeof__(self) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
if (GoogleMobileAdsConsentManager.sharedInstance.canRequestAds) {
[strongSelf startGoogleMobileAdsSDK];
}
// ...
}];
// This sample attempts to load ads using consent obtained in the previous session.
if (GoogleMobileAdsConsentManager.sharedInstance.canRequestAds) {
[self startGoogleMobileAdsSDK];
}
O código abaixo configura o SDK dos anúncios para dispositivos móveis do Google depois que o consentimento do usuário é coletado:
Swift
private func startGoogleMobileAdsSDK() {
DispatchQueue.main.async {
guard !self.isMobileAdsStartCalled else { return }
self.isMobileAdsStartCalled = true
// Initialize the Google Mobile Ads SDK.
GADMobileAds.sharedInstance().start()
if self.isViewDidAppearCalled {
self.loadBannerAd()
}
}
}
SwiftUI
/// Method to initialize the Google Mobile Ads SDK. The SDK should only be initialized once.
func startGoogleMobileAdsSDK() {
guard canRequestAds, !isMobileAdsStartCalled else { return }
isMobileAdsStartCalled = true
// Initialize the Google Mobile Ads SDK.
GADMobileAds.sharedInstance().start()
}
Objective-C
- (void)startGoogleMobileAdsSDK {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Initialize the Google Mobile Ads SDK.
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];
[self loadBannerAd];
});
}
Teste
Se você quiser testar a integração no seu app durante o desenvolvimento, siga estas etapas para registrar o dispositivo de teste por programação. Remova o código que define esses IDs de dispositivo de teste antes de lançar o app.
- Ligue para a
requestConsentInfoUpdate(with:completionHandler:)
. Verifique se há uma mensagem semelhante ao exemplo abaixo na saída do registro, 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().testDeviceIdentifiers
e transmitir uma lista dos IDs dos dispositivos de teste.Swift
let parameters = UMPRequestParameters() let debugSettings = UMPDebugSettings() debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"] parameters.debugSettings = debugSettings // Include the UMPRequestParameters in your consent request. 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" ]; 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 EEE ou o Reino Unido, usando
geography
. As configurações de depuração só funcionam em dispositivos de teste.
Swift
let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings
// Include the UMPRequestParameters in your consent request.
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;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable error){
// ...
}];
Redefinir o estado de consentimento
Ao testar seu app com o SDK da UMP, pode ser útil redefinir o
estado do SDK para simular a experiência de instalação de um usuário.
O SDK fornece o método reset
para fazer isso.
Swift
UMPConsentInformation.sharedInstance.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