Leading Consent Management Platform

Compliant with GDPR, CCPA, COPPA, LGPD, PECR, PDPA, PIPEDA, and more.

Cómo integrar el SDK de UniConsent CMP para iOS con aplicaciones móviles

UniConsent CMP es un paquete para gestionar el consentimiento GDPR IAB TCF 2.4 en iOS. Puede encontrar una aplicación de demostración integrada con UniConsent CMP en el directorio "UniConsentDemo".

Requisitos previos

  • Plan UniConsent CMP con soporte para aplicaciones móviles
  • iOS >= 15.0
  • Paquete del SDK de UniConsent CMP (solicitar al soporte)

Primeros pasos

Agregue UniConsent.xcframework a su proyecto. En General > Frameworks, Libraries, and Embedded Content de su target, configure UniConsent.xcframework como Embed & Sign.

Personalizar la interfaz de consentimiento

Antes de integrar el SDK, personalice la apariencia del banner de consentimiento en el panel de control de UniConsent para que coincida con su marca y optimice las tasas de consentimiento.

Paso 1: Estilo de marca en el panel de control

Vaya a Projects → Select your Project → Settings → Step 5: UI & Style Settings para configurar:

  • Main Button Colour — Establezca el color del botón de acción principal para que coincida con su marca
  • Main Button Text Colour — Ajuste el color del texto del botón principal para facilitar la lectura
  • Background Colour — Establezca el color de fondo del banner para que se integre con su aplicación
  • Text Colour — Asegúrese de que el texto del cuerpo tenga el contraste adecuado

Paso 2: Estilo avanzado con CSS personalizado (opcional)

Para un control más preciso, agregue CSS personalizado en el campo CSS Content en el Paso 5. Esto se recomienda para que el banner se sienta nativo en su aplicación y logre la mejor tasa de consentimiento:

/* Example: Style the accept button to match your brand */
.unic-btn-accept {
  background-color: #4CAF50;
  border-radius: 8px;
  font-weight: 600;
}

/* Example: Adjust banner font */
.unic-banner {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

/* Example: Make the reject button less prominent */
.unic-btn-reject {
  background-color: transparent;
  border: 1px solid #ccc;
  color: #666;
}

Consejo: Una interfaz de consentimiento bien personalizada que se sienta nativa en su aplicación generalmente logra tasas de consentimiento más altas. Los usuarios tienden a interactuar de manera más positiva con un banner que coincide con la apariencia que esperan.

Uso

Para usar UniConsent CMP en su aplicación, siga estos pasos:

Inicialice el CMP con un App ID proporcionado por su gestor de cuenta:

import UniConsent

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Init CMP with appId
    // initialize() loads the location, config and vendor list over the network: keep it off the main thread
    DispatchQueue.global(qos: .userInitiated).async {
        UniConsentCMP.shared.initialize(apiId: "YOUR_APP_ID_CHANGE_THIS")
    }
    return true
}

Mostrar la interfaz del CMP:

// Display CMP as full-screen modal (default)
UniConsentCMP.shared.setUIStage(.GDPRFirstScreen)
UniConsentCMP.shared.launchCMP(rootVC: self)

// Display CMP as a modal bottom sheet
UniConsentCMP.shared.launchCMP(rootVC: self, displayMode: .modalSheet)

// Display CMP as a modal bottom sheet at 60% of the available height
UniConsentCMP.shared.launchCMP(rootVC: self, displayMode: .modalSheet, heightRatio: 0.6)

// Display CMP as a center dialog
UniConsentCMP.shared.launchCMP(rootVC: self, displayMode: .dialog)

// Display CMP as a center dialog at 80% width and 60% height
UniConsentCMP.shared.launchCMP(rootVC: self, displayMode: .dialog, widthRatio: 0.8, heightRatio: 0.6)

Modos de visualización disponibles (CMPDisplayMode):

  • .fullScreen — Presentación modal a pantalla completa (predeterminado)
  • .modalSheet — Hoja inferior con controlador de arrastre (iOS 15+)
  • .dialog — Diálogo centrado con fondo atenuado

Tamaño personalizado (opcional)

Disponible desde la versión 26.8.0 del SDK.

Ambas proporciones son opcionales: todos los modos de visualización funcionan sin ellas. Pase una proporción (una fracción de la pantalla, limitada al rango 0.1...1.0) solo para sobrescribir el tamaño predeterminado:

ParámetroSe aplica aValor predeterminado si se omite
heightRatio.modalSheet, .dialogHoja: 90% de la altura disponible. Diálogo: 70% de la pantalla
widthRatioSolo .dialog90% del ancho de la pantalla, hasta 500pt

Las proporciones que no se aplican al modo de visualización elegido se ignoran (.fullScreen ignora ambas). En iOS 16+ la hoja usa el heightRatio exacto; iOS 15 recurre al detent medio del sistema (proporción ≤ 0.5) o al detent grande (proporción > 0.5).

Manejador de eventos

Escuche los eventos del ciclo de vida del SDK con CMPEventHandler. Esta es la forma recomendada de saber cuándo el SDK ha terminado de inicializarse, cuándo se muestra la interfaz y cuándo se cierra.

Eventos disponibles (CMPEventType):

  • .sdkInit — Inicio de la inicialización del SDK
  • .ready — Inicialización del SDK completada (GEO, configuración y proveedores cargados)
  • .uiDisplay — La interfaz de consentimiento se muestra
  • .uiClose — La interfaz de consentimiento se cierra

Suscríbase a los eventos antes de llamar a initialize() para recibir todos los eventos:

import UniConsent

@main
class AppDelegate: UIResponder, UIApplicationDelegate, CMPEventHandler {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        UniConsentCMP.shared.subscribe(self)
        DispatchQueue.global(qos: .userInitiated).async {
            UniConsentCMP.shared.initialize(apiId: "YOUR_APP_ID")
        }
        return true
    }

    func handle(event: CMPEvent) {
        switch event.type {
        case .ready:
            // SDK is ready — check consent and launch CMP if needed
            // events arrive on the thread that called initialize(): show UI on the main thread
            DispatchQueue.main.async {
                if let rootVC = UIApplication.shared.connectedScenes
                    .compactMap({ ($0 as? UIWindowScene)?.keyWindow?.rootViewController }).first {
                    UniConsentCMP.shared.launchCMPIfNeeded(rootVC: rootVC)
                }
            }
        case .uiClose:
            // User finished interacting with consent UI
            print("TC String:", UniConsentCMP.shared.getTCString())
        default:
            break
        }
    }
}

También puede suscribirse desde un view controller:

class ViewController: UIViewController, CMPEventHandler {

    override func viewDidLoad() {
        super.viewDidLoad()
        UniConsentCMP.shared.subscribe(self)
    }

    func handle(event: CMPEvent) {
        switch event.type {
        case .uiDisplay:
            print("CMP UI is now visible")
        case .uiClose:
            print("Consent given, vendor 1 allowed:", UniConsentCMP.shared.isAllowVendorById(vendorId: 1))
        default:
            break
        }
    }
}

Para cancelar la suscripción:

UniConsentCMP.shared.unsubscribe(self)

CMPUIDelegate (legacy)

También puede escuchar el cierre del consentimiento con CMPUIDelegate:

class ViewController: UIViewController, CMPUIDelegate {

    func showCMP() {
        UniConsentCMP.shared.view.delegate = self
        UniConsentCMP.shared.setUIStage(.GDPRFirstScreen)
        UniConsentCMP.shared.launchCMP(rootVC: self, displayMode: .modalSheet)
    }

    func onDismiss() {
        // Called when the user closes the consent UI
        print("TC String:", UniConsentCMP.shared.getTCString())
    }
}

Verificar automáticamente si el consentimiento ha expirado cuando se actualiza la lista de proveedores:

// Automatic check if consent is expired when vendorList updates
if UniConsentCMP.shared.shouldRequestConsent() {
    UniConsentCMP.shared.launchCMP(rootVC: self)
}

Obtener el tcString si es necesario:

// Get tcString if required
UniConsentCMP.shared.getTCString()

Leer el estado del consentimiento:

// Check consent for a specific IAB purpose
UniConsentCMP.shared.isAllowPurposeById(purposeId: 1)

// Check consent for a specific IAB vendor
UniConsentCMP.shared.isAllowVendorById(vendorId: 1)

// Get all allowed purpose/vendor IDs
UniConsentCMP.shared.getAllowedPurposeIds()
UniConsentCMP.shared.getAllowedVendorIds()

// Check if GDPR applies
UniConsentCMP.shared.gdprApplies

// Check if any consent has been given
UniConsentCMP.shared.isConsentGiven()

Restablecer el estado del consentimiento si es necesario:

// Reset consent status if required
UniConsentCMP.shared.clearConsentData()

Primera capa personalizada (Aceptar todo / Rechazar todo)

Disponible desde la versión 26.7.0 del SDK. Si crea su propia interfaz de consentimiento de primera capa en lugar de mostrar la webview del CMP, puede guardar el consentimiento directamente:

// Grant consent for all purposes, special features and vendors
let saved = UniConsentCMP.shared.agreeAll()

// Reject all purposes, special features and vendors
let saved = UniConsentCMP.shared.rejectAll()

Ambas API guardan los mismos valores de consentimiento que el flujo de la interfaz del CMP (claves IAB TCF, consentimiento adicional y señales de consent mode) y disparan el mismo evento .uiClose para los suscriptores.

Para los usuarios de EE. UU. y Canadá, ambas API también guardan la elección de CCPA, US State Privacy e IAB TCF Canadá que les corresponde, con las mismas reglas que la interfaz de la CMP, y escriben las claves IAB GPP y US Privacy. Active los modos API-Only en la configuración del proyecto en el panel de UniConsent para que el banner de la CMP no se muestre en esas regiones.

También guardan la elección de categorías de cookies donde se aplica un banner de categorías de cookies (todas las categorías, o solo Estrictamente necesarias), y las finalidades y los proveedores personalizados del proyecto.

Para saber qué primera capa mostrar, llame a getPolicy() (desde la versión 26.10.0 del SDK). Devuelve la política que se aplica al usuario, con las mismas reglas que la CMP: gdpr (IAB TCF), tcfca (IAB TCF Canadá), uss (US State Privacy), ccpa, categories (vea Categorías de cookies más abajo) o none.

let cmp = UniConsentCMP.shared
if cmp.shouldRequestConsent() {
    // el usuario debe tomar una decisión: muestre su primera capa para esta política
    let policy = cmp.getPolicy() // gdpr, tcfca o categories
}

Nota: Estas API obtienen la lista de proveedores y la configuración del proyecto a través de la red de forma síncrona y devuelven false si el consentimiento no pudo guardarse (por ejemplo, sin conexión). Llámelas después de initialize() y fuera del hilo principal.

Importante: Su primera capa personalizada debe seguir cumpliendo los requisitos de IAB TCF (divulgar las finalidades y los proveedores, y ofrecer aceptar y rechazar con la misma prominencia). Los usuarios deben poder seguir abriendo la interfaz completa del CMP (launchCMP()) para tomar decisiones granulares.

Sincronizar el consentimiento con WebView

Si su aplicación abre un WKWebView que carga una página web con la etiqueta UniConsent CMP, puede pasar el estado de consentimiento nativo para que la etiqueta CMP reconozca el consentimiento existente y no muestre el banner nuevamente.

Llame a syncConsent(to:) antes de cargar la página web:

import WebKit
import UniConsent

let webView = WKWebView(frame: .zero, configuration: WKWebViewConfiguration())

// Inject native consent before page load
UniConsentCMP.shared.syncConsent(to: webView)

// Then load your web page
webView.load(URLRequest(url: URL(string: "https://example.com")!))

Objective-C

// Initialize with event handler
@interface AppDelegate () <CMPEventHandler>
@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[UniConsentCMP shared] subscribe:self];
    // initialize loads the location, config and vendor list over the network: keep it off the main thread
    dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{
        [[UniConsentCMP shared] initializeWithApiId:@"YOUR_APP_ID"];
    });
    return YES;
}

- (void)handleWithEvent:(CMPEvent *)event {
    switch (event.type) {
        case CMPEventTypeReady:
            NSLog(@"CMP ready");
            break;
        case CMPEventTypeUiClose:
            NSLog(@"TC String: %@", [[UniConsentCMP shared] getTCString]);
            break;
        default:
            break;
    }
}

@end

// Display CMP (full screen by default)
[UniConsentCMP.shared launchCMPWithRootVC:self];

// Display CMP with a specific display mode
// Use CMPDisplayModeFullScreen, CMPDisplayModeModalSheet, or CMPDisplayModeDialog
[UniConsentCMP.shared launchCMPWithRootVC:self displayMode:CMPDisplayModeModalSheet];

Abrir una pantalla concreta y otras opciones

Abra la CMP en una pantalla concreta, por ejemplo desde un enlace "Configuración de privacidad" de su app. La pantalla solicitada siempre se abre. Para los usuarios de EE. UU., las pantallas de configuración abren la configuración de CCPA o US State Privacy que les corresponde. Los usuarios de Canadá ven la versión IAB TCF Canada de las pantallas de IAB TCF.

PantallaMuestra
.GDPRFirstScreenPrimera capa (banner)
.GDPRSecondScreenConfiguración (finalidades)
.GDPRVendorsScreenProveedores
.CCPAFirstScreenPrimera capa de CCPA
.CCPASecondScreenConfiguración de CCPA
.USStateFirstScreenPrimera capa de US State Privacy
.USStateSecondScreenConfiguración de US State Privacy
.CategoriesFirstScreenPrimera capa de categorías de cookies (banner)
.CategoriesSecondScreenConfiguración de categorías de cookies
let cmp = UniConsentCMP.shared

// abrir la pantalla de configuración
cmp.setUIStage(.GDPRSecondScreen)
cmp.launchCMP(rootVC: self)

// abrir la CMP solo cuando se necesita consentimiento (UE e IAB TCF Canadá); devuelve si se abrió
let opened = cmp.launchCMPIfNeeded(rootVC: self)

// registros de depuración del SDK y de la página de la CMP; use .error (predeterminado) en las versiones de producción
cmp.setLogLevel(.debug)

// solo para pruebas: mostrar la CMP como para un usuario de otra región, "EU", "CA" (Canadá), "CAQC" (Quebec), "US" más un código de estado como "USCA" o "USTX", "BR", "CN", "ZA", "VN" o cualquier otro código de país, o "N" (fuera de estas regiones). También se aplica a getPolicy() y shouldRequestConsent(); elimínelo en las versiones de producción
cmp.setTestRegion("CA")

// cerrar la CMP si está abierta
cmp.dismissCMP()

// el usuario ha hecho una elección: IAB TCF, CCPA, US State Privacy o IAB TCF Canadá
let given = cmp.isConsentGiven()

// días desde que se creó el consentimiento IAB TCF, 0 si no hay ninguno
let days = cmp.getConsentAge()

// región del usuario y, para EE. UU. y Canadá, el código del estado o la provincia (vacío si se desconoce)
let geo = cmp.getGEO()
let state = cmp.getGEOState()

IAB GPP y US Privacy

La CMP guarda las claves IAB GPP y la clave US Privacy en los UserDefaults de la app, tal como las definen las especificaciones de IAB. Los SDK de publicidad de su app las leen desde ahí; no hace falta cambiar código. Las claves GPP se escriben cuando GPP, US State Privacy o IAB TCF Canadá está activado en la configuración del proyecto en el panel de UniConsent. La clave US Privacy se escribe siempre que la CCPA esté activada.

ClaveValor
IABGPP_HDR_VersionVersión de GPP (1)
IABGPP_HDR_SectionsID de sección en la cadena GPP, separados por _
IABGPP_HDR_GppStringLa cadena GPP completa
IABGPP_GppSIDID de sección que se aplican al usuario, separados por _, o -1 si no se aplica ninguno
IABGPP_2_StringCadena IAB TCF EU, cuando se aplica el RGPD
IABGPP_5_StringCadena IAB TCF Canadá, cuando se aplica TCF Canadá
IABGPP_6_StringCadena US Privacy, cuando se aplica la CCPA
IABGPP_7_StringCadena US National (usnat), cuando se aplica US State Privacy o la CCPA
IABGPP_8_String a IABGPP_27_StringLa sección del estado del usuario (8 California a 27 Rhode Island), cuando se aplica US State Privacy, o California con la CCPA, según el ajuste GPP Sections
IABUSPrivacy_StringCadena US Privacy siempre que la CCPA esté activada: la elección del usuario en la región CCPA; si no, 1---

Las claves se actualizan cada vez que se carga la CMP y después de cada elección de consentimiento. Qué usuarios reciben las claves IABGPP_ depende de GPP Signals en la configuración del proyecto: los usuarios de Canadá siempre (IAB TCF Canada), los de EE. UU. cuando US está activado y los de la UE cuando EU está activado. Los usuarios que no cubre ninguna región reciben las claves sin sección mientras US o EU esté activado, y ninguna clave en caso contrario. Para leerlas usted mismo:

let gppString = UserDefaults.standard.string(forKey: "IABGPP_HDR_GppString") ?? ""
let gppSid = UserDefaults.standard.string(forKey: "IABGPP_GppSID") ?? ""

EE. UU. y Canadá

Las apps admiten las mismas opciones para EE. UU. y Canadá que los sitios web: CCPA, US State Privacy (con la lista de estados y los ajustes GPP Sections y MSPA) e IAB TCF Canadá. shouldRequestConsent() devuelve true para los usuarios de Canadá a los que se aplica IAB TCF Canadá hasta que toman una decisión. La privacidad en EE. UU. es de exclusión voluntaria, así que a los usuarios de EE. UU. no se les pregunta por sí solo: ven el banner o los ajustes de EE. UU. cuando su app abre la CMP, por ejemplo desde un enlace a la configuración de privacidad. Hasta entonces, cuando la CCPA o US State Privacy están activadas, el SDK escribe las claves US Privacy y GPP predeterminadas para los usuarios de EE. UU. sin mostrar nada: sin exclusión, o con exclusión cuando el seguimiento publicitario está desactivado en el dispositivo. US State Privacy empieza desactivado en los proyectos Mobile App nuevos; actívelo en el panel.

Exclusión del seguimiento publicitario del dispositivo

Si el usuario ha desactivado el seguimiento publicitario en el dispositivo, la CMP lo trata como una exclusión de EE. UU. de la venta, el intercambio y la publicidad dirigida, como hace Global Privacy Control en los sitios web. En iOS es el seguimiento no permitido en App Tracking Transparency; en Android, un ID de publicidad eliminado o la limitación del seguimiento publicitario, que se lee a través de los servicios de Google Play cuando su app los incluye. Una elección que el usuario guarde después en el banner tiene prioridad.

Leer las cadenas GPP y US Privacy

El SDK también devuelve las cadenas guardadas:

let gppString = UniConsentCMP.shared.getGPPString()
let gppSid = UniConsentCMP.shared.getGPPSID()
let usPrivacy = UniConsentCMP.shared.getUSPrivacyString()

Categorías de cookies

Disponible desde la versión 26.10.0 del SDK. Donde una región usa categorías de cookies en lugar de IAB TCF o las políticas de EE. UU., la CMP muestra un banner con cuatro categorías: Estrictamente necesarias, Rendimiento, Funcionalidad, y Segmentación o publicidad. Se aplica a:

  • LGPD en Brasil, PIPL en China, POPIA en Sudáfrica y PDPD en Vietnam, cuando están activadas en la configuración del proyecto en el panel de UniConsent
  • sus reglas para otros países: una regla para un país y una regla para todos los demás países
  • un proyecto Consent Categories, en sus regiones

Las categorías opt-in empiezan solo con Estrictamente necesarias activada, y shouldRequestConsent() devuelve true hasta que el usuario toma una decisión, y de nuevo después de cambiar la versión de configuración. Las categorías opt-out empiezan con todas las categorías activadas (Segmentación desactivada cuando el seguimiento publicitario está desactivado en el dispositivo en EE. UU.), y la app no pregunta por sí sola: los usuarios las cambian desde su enlace a la configuración de privacidad. Opt-out se aplica a una regla opt-out para otros países y, en apps, a un proyecto Consent Categories en EE. UU.

Abra las pantallas de categorías con .CategoriesFirstScreen (banner) y .CategoriesSecondScreen (configuración). setTestRegion() también acepta BR, CN, ZA, VN y otros códigos de país, para probar estas regiones.

Finalidades personalizadas y proveedores personalizados

Disponible desde la versión 26.10.0 del SDK. Las finalidades personalizadas y los proveedores personalizados que añada en la configuración del proyecto en el panel de UniConsent se muestran en las pantallas de la CMP: las finalidades personalizadas en la primera capa y la configuración de IAB TCF y en la configuración de categorías de cookies, los proveedores personalizados en la lista de proveedores de IAB TCF. En la configuración de CCPA y US State Privacy solo se listan las finalidades personalizadas sensibles. En la configuración de categorías de cookies los proveedores personalizados siguen la categoría Segmentación o publicidad. Donde IAB TCF no se aplica (categorías de cookies y EE. UU.), los proveedores personalizados se listan en modo de solo lectura en la lista de proveedores del menú, y en la configuración de categorías de cookies en Segmentación o publicidad.

Para iniciar o detener sus propios SDK según ellos, pregunte al SDK si la app puede usar ahora una finalidad personalizada o un proveedor personalizado. La respuesta sigue la política del usuario, con las mismas reglas que la CMP usa para las etiquetas:

  • IAB TCF, IAB TCF Canadá y categorías de cookies opt-in: permitidos solo después de que el usuario acepte
  • EE. UU. y categorías de cookies opt-out: permitidos hasta que el usuario se excluya; las finalidades personalizadas sensibles necesitan la aceptación del usuario, y los proveedores personalizados se desactivan cuando el seguimiento publicitario está desactivado en el dispositivo en EE. UU.
  • sin política: permitidos
let cmp = UniConsentCMP.shared
if cmp.isCustomPurposeConsented(1) {
    // inicie el SDK que cubre su finalidad personalizada 1
}
let vendorAllowed = cmp.isCustomVendorConsented(2)
let all = cmp.getCustomConsents() // ["purposes": ["1": true], "vendors": ["2": false]]

Vuelva a llamarlas después de que la CMP se cierre o cambie el consentimiento. Los ID que el proyecto no tiene, y todos los ID antes de que el SDK esté listo, devuelven false.

Divulgación de SDK de terceros

La CMP puede listar los SDK de terceros de su app (redes publicitarias, analítica, atribución y otros) con su empresa, su finalidad y su política de privacidad. Los usuarios los ven en la lista de proveedores, de solo lectura en todas las regiones: no hay interruptores, y su app sigue activando o desactivando cada SDK según las elecciones del usuario para los propósitos o las categorías de cookies.

Para definir la lista, active Enable Third-party SDKs en Step 4: Advanced Features de su proyecto de app, elija sus SDK en la pestaña Third-party SDKs o añada los suyos, y luego guarde y publique. No necesita código en su app.

Configurar los valores predeterminados de estado de consentimiento KV:

<key>FIREBASE_ANALYTICS_COLLECTION_ENABLED</key> <false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE</key> <false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE</key> <false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA</key> <false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS</key> <false/>

Controlar la analítica basándose en los indicadores de consentimiento:

// SDK Version <= 25.6.1
public func onDismiss() {

    if(UniConsentCMP.shared.isAllowPurposeById(purposeId: 1)) {
        Analytics.setConsent([
          .analyticsStorage: .granted,
          .adStorage: .granted,
          .adUserData: .granted,
          .adPersonalization: .granted,
        ])
        Analytics.setAnalyticsCollectionEnabled(true);
    } else {
        Analytics.setConsent([
          .analyticsStorage: .denied,
          .adStorage: .denied,
          .adUserData: .denied,
          .adPersonalization: .denied,
        ])
        Analytics.setAnalyticsCollectionEnabled(false);
    }

    // other logics such as send analytics events
}

Más información en Set up consent mode for apps

Notas

  1. Los usuarios deben tener la posibilidad de acceder a un botón o enlace de "Configuración de privacidad" en la sección de ajustes de su aplicación para abrir la interfaz del CMP.
  2. Puede utilizar la función shouldRequestConsent() para verificar si debe solicitar un nuevo consentimiento según el estado. Muestre la interfaz del CMP cuando sea necesario al abrir la aplicación.
  3. A partir de la versión 25.6.1 del SDK, ya no necesita enviar manualmente las opciones de consentimiento para FirebaseAnalytics o ciertos SDKs AAP compatibles, ya que el SDK los gestiona automáticamente. Para más información, consulte What is Google AAP and Google MMP for Mobile Apps?.

Registro de cambios

26.11.0

  • Nuevo setCustomConsent() para guardar la elección de una finalidad personalizada desde una pantalla propia de su app, como una casilla de seguimiento de apertura de emails; isCustomPurposeConsented() también acepta el ID de la finalidad personalizada definido en el panel
  • Un ID de usuario email se envía como email_hash (SHA-256); la dirección no se guarda ni se envía
  • Las claves IAB GPP siguen los ajustes de GPP Signals del panel

26.10.0

  • Claves IAB GPP y US Privacy para los SDK de publicidad
  • US State Privacy e IAB TCF Canadá en apps, también con primera capa personalizada
  • Nuevos getGPPString(), getGPPSID() y getUSPrivacyString()
  • Abrir la configuración de US State Privacy con .USStateSecondScreen; nuevos launchCMPIfNeeded(), setLogLevel() y getGEOState()
  • Abrir la primera capa de CCPA y de US State Privacy con .CCPAFirstScreen y .USStateFirstScreen; nuevo setTestRegion() para probar la CMP como un usuario de otra región, por ejemplo Canadá
  • Categorías de cookies en apps: LGPD (Brasil), PIPL (China), POPIA (Sudáfrica), PDPD (Vietnam), sus reglas para otros países y los proyectos Consent Categories, con .CategoriesFirstScreen y .CategoriesSecondScreen
  • Nuevo getPolicy(); agreeAll() y rejectAll() también guardan las categorías de cookies, las finalidades personalizadas y los proveedores personalizados
  • setTestRegion() también acepta BR, CN, ZA, VN y otros códigos de país, y se aplica a getPolicy() y shouldRequestConsent()
  • Nuevos isCustomPurposeConsented(), isCustomVendorConsented() y getCustomConsents(): las finalidades y los proveedores personalizados que la app puede usar ahora según la política del usuario

26.9.0

  • Compatibilidad con IAB TCF 2.4

Adelántese en privacidad y consentimiento

Leyes de privacidad, consentimiento y cumplimiento, unos pocos correos al mes.

Sin spam, cancele cuando quiera. Privacidad