Según la Política de Consentimiento de Usuarios de la UE de Google, debes divulgar determinada información a los usuarios del Espacio Económico Europeo (EEE) y del Reino Unido, y obtener su consentimiento para el uso de cookies y otro tipo de almacenamiento local, cuando sea un requisito legal, como así también para el uso de datos personales (como AdID) con fines de publicación de anuncios. Esta política refleja los requisitos de la Directiva de Privacidad Electrónica de la UE y el Reglamento General de Protección de Datos (GDPR).
Para ayudar a los publicadores a cumplir con sus obligaciones en virtud de esta política, Google ofrece el SDK de User Messaging Platform (UMP). Se actualizó el SDK de UMP para que admita los estándares más recientes de la IAB. Todas estas configuraciones ahora se pueden manejar de forma conveniente en la AdMob privacidad y la mensajería.
Requisitos previos
- Completar la Guía de introducción
- Configura tus mensajes en la pestaña Privacidad y mensajería de tu AdMob cuenta. Para obtener más detalles, consulta Acerca de la privacidad y los mensajes
- Si trabajas con requisitos relacionados con el GDPR, lee Cómo afectan los requisitos de la IAB a los mensajes de consentimiento para usuarios de la UE.
Tipos de mensajes para los usuarios
Consulta Tipos de mensajes de los usuarios para obtener una lista completa de los mensajes admitidos. Para obtener instrucciones específicas sobre cómo implementar cada tipo de mensaje, consulta la barra de navegación izquierda.
Importa el SDK
CocoaPods (preferido)
El SDK de UMP se incluye como dependencia del Pod del SDK de Google Mobile Ads a partir del SDK 7.64.0.
La forma más fácil de importar el SDK en un proyecto de iOS es usar CocoaPods. Abre el Podfile de tu proyecto y agrega esta línea al destino de tu app:
pod 'Google-Mobile-Ads-SDK'
Luego, ejecuta el comando siguiente:
pod install --repo-update
Si eres nuevo en CocoaPods, consulta Cómo usar CocoaPods para obtener detalles sobre cómo crear y usar Podfiles.
Descarga manual
La otra forma de importar el SDK es hacerlo manualmente.
Luego, arrastra el framework a tu proyecto de Xcode y asegúrate de seleccionar Copiar elementos si es necesario.
Luego, puedes incluir el framework en cualquier archivo que necesites mediante:
Swift
import UserMessagingPlatform
Objective‑C
#include <UserMessagingPlatform/UserMessagingPlatform.h>
Actualiza el archivo Info.plist
Busque su ID de aplicación y agrégalo a tuInfo.plist
:
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
Determina si se debe mostrar un mensaje
Debes solicitar una actualización de la información de consentimiento del usuario en cada inicio de la app mediante requestConsentInfoUpdateWithParameters:completionHandler:
antes de cargar un formulario.
Esto puede determinar si el usuario debe dar su consentimiento si aún no lo ha hecho o si venció.
A continuación, se muestra un ejemplo de cómo verificar el estado cuando se inicia la 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. } }]; }
Cargar un formulario si está disponible
Antes de mostrar un formulario, primero debe determinar si hay uno disponible. Los formularios no disponibles pueden deberse a que el usuario habilitó el seguimiento de anuncios limitado o a que los etiquetó como menores de la edad de consentimiento.
Para verificar la disponibilidad de un formulario, usa elthe formStatus
property on the UMPConsentInformation
instance que creaste anteriormente.
Luego, agrega un método wrapper para cargar el formulario:
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 cargar el formulario, usa 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 } }]; }
Presentar el formulario si es necesario
Después de determinar la disponibilidad del formulario y cargarlo, usa el métodopresentFromViewController:completionHandler:
en la instancia deUMPConsentForm
para presentar el formulario.
Usa el objetoUMPConsentInformation
anterior para verificarconsent status y actualizar tu 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. } } }]; }
Si necesitas realizar alguna acción después de que el usuario eligió o descartó el formulario, coloca esa lógica en el controlador de finalización o en la devolución de llamada del formulario.
Prueba
Forzar una geografía
El SDK de UMP proporciona una forma de probar el comportamiento de tu app como si el dispositivo estuviera ubicado en el EEE o el Reino Unido mediante the debugGeography
property of type UMPDebugGeography
on UMPDebugSettings
.
Debes proporcionar el ID con hash de tu dispositivo de prueba en la configuración de depuración de tu app para usar la funcionalidad de depuración. Si llamas arequestConsentInfoUpdateWithParameters:completionHandler:
sin configurar este valor, tu app registrará el hash del ID obligatorio cuando se ejecute.
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){ ... }];
Con la UMPDebugGeography
, puedes forzar la ubicación geográfica a una de estas opciones:
DebugGeo | Descripción |
---|---|
UMPDebugGeographyDisabled |
Se inhabilitó la geografía de depuración. |
UMPDebugGeographyEEA |
La ubicación geográfica aparece en el EEE para los dispositivos de depuración. |
UMPDebugGeographyNotEEA |
La geografía no aparece en el EEE para los dispositivos de depuración. |
Ten en cuenta que la configuración de depuración solo funciona en dispositivos de prueba. No es necesario agregar los emuladores a la lista de ID de dispositivos porque ya tienen habilitadas las pruebas de forma predeterminada.
Restablecer el estado de consentimiento
Cuando pruebes tu app con el SDK de UMP, tal vez te resulte útil restablecer el estado del SDK para que puedas simular la primera experiencia del usuario con la instalación.
El SDK proporciona el método reset
para hacer esto.
Swift
UMPConsentInformation.sharedInstance.reset()
Objective‑C
[UMPConsentInformation.sharedInstance reset];
También debes llamar a reset
si decides quitar el SDK de UMP por completo de tu proyecto.