Directrices de gestión del consentimiento para aplicaciones móviles

Resumen

Este documento ofrece directrices exhaustivas para implementar la gestión del consentimiento en aplicaciones móviles, garantizando el cumplimiento de las normativas de protección de datos, incluidos el RGPD, la LGPD y los requisitos del Marco de Transparencia y Consentimiento (TCF) de la IAB. Aborda el tratamiento adecuado del consentimiento del usuario para servicios de terceros, como redes publicitarias, plataformas de análisis y otros servicios de seguimiento.

Requisitos de implementación

1. No inicialices servicios de terceros sin verificar el consentimiento

Pasos de implementación:
  1. Comprueba si el usuario ha dado su consentimiento
  2. Verifica el consentimiento para el proveedor o servicio específico
  3. Inicia el servicio solo si se cumplen ambas condiciones
  4. Si no se ha otorgado el consentimiento para un proveedor o una finalidad concretos, tendrás que:

2. Verificación del consentimiento en dos fases

Aplica siempre ambas comprobaciones, tal y como exigen el artículo 7, apartado 1, del RGPD y las especificaciones del TCF de la IAB:

Fase 1: ¿Ha tomado el usuario una decisión?

  • Comprueba si el usuario ha interactuado con la capa de consentimiento
  • Si no se ha tomado ninguna decisión, no se procesarán datos personales

Fase 2: ¿Da el usuario su consentimiento para un fin específico?

  • Comprueba si se ha otorgado el consentimiento para el servicio de terceros específico
  • Cada proveedor o servicio requiere una verificación de consentimiento individual.

Escenarios del flujo de trabajo del usuario

Escenario 1: Flujo de trabajo normal del usuario

Flujo: El usuario abre la aplicación → El SDK muestra la capa de consentimiento (si es necesario) → El usuario elige una opción → La aplicación continúa con los servicios correspondientes

Importante: la navegación con el botón Atrás o los gestos están desactivados en nuestros SDK para móviles, por lo que el usuario no puede cerrar la ventana de consentimiento sin haber dado el consentimiento adecuado.

Pasos de implementación:
  1. Inicio de la aplicación: Inicializa la plataforma de gestión del consentimiento. Para ello, utiliza el método checkAndOpen(). Consulta los ejemplos en nuestra documentación de ayuda (iOS, Android).
  2. Comprobación del consentimiento: el paso anterior determinará automáticamente si se necesita el consentimiento o no, para que el usuario pueda tomar una decisión informada al respecto. 
  3. Inicialización de servicios: Inicializa los servicios en función de las opciones de consentimiento del usuario
Ejemplo de aplicación:
// This hypothetical example assumes you have implemented: 
//   - OneSignal (s1448)
//   - Google Ads/AdMob (s1)
//   - Google Analytics (s26)

class yourGreatApp {

    void function onAppLaunch() {
        if shouldInitializeService("s148") {
            OneSignal.initialize("your-token")
        }
    
        if shouldInitializeService("s1") {
            AdMobService.initialize()
        }
    
        if shouldInitializeService("s26") {
            FirebaseAnalytics.initializeApp("your-token")
        }   
    }
    
    
    boolean private function shouldInitializeService(string: purposeId):
        // Phase 1: Check if user has made any decision
        consentStatus = CMPManager.getUserStatus()
        if consentStatus.status = "choiceDoesntExist"
            return false  // Consent Layer was not yet displayed to this client
        
        return CMPManager.shared.getStatusForPurpose(id: purposeId) == "granted"
    }
}

Escenario 2: Sin conexión a Internet

Flujo: El usuario abre la aplicación sin conexión a Internet → El CMP no puede cargar la capa de consentimiento → La aplicación debe gestionar la situación con elegancia

Observaciones críticas:
  • Nuestro SDK móvil no puede recuperar la configuración de los servidores
  • Las decisiones de consentimiento anteriores pueden seguir siendo válidas (conforme al artículo 7, apartado 3, del RGPD sobre la retirada del consentimiento).
  • La aplicación debe funcionar en modo degradado sin procesar datos personales en caso de que aún no se haya dado el consentimiento.
Estrategia de implementación:
  1. Comprueba si hay datos de consentimiento persistentes de sesiones anteriores (utilizarás getUserStatus() como en el ejemplo anterior para ello)
  2. Si ya existe un consentimiento previo, procede con normalidad
  3. Si no hay consentimiento persistente ni conexión a Internet:
    • Bloquea todos los servicios de terceros que no sean esenciales
    • Muestra un mensaje fácil de entender que explique la situación
    • Configura un detector de conectividad para volver a intentarlo cuando se restablezca la conexión y muestra la ventana de consentimiento cuando esto ocurra
    • Permite la funcionalidad básica de la aplicación que no requiera el tratamiento de datos personales
Consideraciones sobre la experiencia del usuario:
  • Muestra un mensaje claro sobre la funcionalidad limitada
  • Implementa la opción de reintentar cuando haya conexión disponible
  • Explica que no se compartirán datos personales hasta que se hayan seleccionado las opciones de privacidad
  • Ofrece la opción de continuar en modo limitado

Escenario 3: No se requiere consentimiento

Situación: el usuario se encuentra fuera de la UE y el CMP está configurado para mostrarse solo en la UE → No se muestra

la capa de consentimiento. Estrategia de implementación:

  1. Inicializa la configuración de CMP como de costumbre
  2. Permite que CMP determine si debe mostrarse la capa de consentimiento utilizando checkAndOpen()
  3. Si no se requiere consentimiento, el estado del usuario devolverá «choiceExists» y los proveedores y fines se establecerán en «concedido».
  4. Inicia todos los servicios con normalidad

Reacciona ante los cambios en el consentimiento

Los cambios en el consentimiento pueden producirse en varios escenarios:

  • El usuario abre la configuración de consentimiento y cambia sus preferencias
  • El consentimiento caduca y debe renovarse (esta configuración se encuentra en la sección «Legal» del panel de control de tu CMP).
  • Cambios en los requisitos legales que obligan a recabar de nuevo el consentimiento
  • El usuario solicita la eliminación de datos

El checkAndOpen() método reaccionará ante todas esas situaciones. Implementa un listener que supervise los cambios de consentimiento. Puedes utilizar la didReceiveConsent callback para ello (iOS y Android). Si en algún momento se rechaza un proveedor o una finalidad concretos, actúa de inmediato y bloquea los servicios en consecuencia.

Lista de comprobación

Pruebas funcionales

Prueba de flujo normal:

  • La aplicación se inicia correctamente y muestra la ventana de consentimiento cuando es necesario.
  • Las opciones de consentimiento del usuario se registran y respetan adecuadamente
  • Los servicios solo se activan con el consentimiento adecuado.
  • La aplicación funciona correctamente tras las decisiones de consentimiento

Pruebas de flujo de rechazo:

  • El rechazo del usuario bloquea correctamente los servicios de terceros
  • La aplicación sigue funcionando o pasa a modo degradado en función de tu estrategia de ingresos

Pruebas offline:

  • La aplicación gestiona con elegancia la falta de conexión a Internet
  • Los datos de consentimiento almacenados en caché se utilizan de forma adecuada
  • El modo de privacidad se activa cuando es necesario
  • El restablecimiento de la conexión activa la lógica de reintento adecuada

Prueba de tiempo de espera:

  • El tiempo de espera de la capa de consentimiento activa la alternativa adecuada
  • La aplicación no se cuelga ni se bloquea durante el tiempo de espera
  • El modo de reserva bloquea correctamente el tratamiento de datos
  • El usuario recibe una comunicación clara sobre el estado

Pruebas de conformidad

Verificación del tratamiento de datos:

  • No se envían datos de seguimiento antes de que el usuario dé su consentimiento.
  • Los ID de proveedor se han asignado correctamente a los servicios reales
  • El bloqueo de servicios individuales funciona según lo previsto
  • Granularidad del consentimiento correctamente implementada

Verificación de los requisitos legales:

  • La retirada del consentimiento detiene el tratamiento de datos de forma inmediata
  • Los derechos de los interesados pueden ejercerse a través de la aplicación
  • Se mantiene un registro de auditoría adecuado para las decisiones de consentimiento
  • Fundamento jurídico documentado para todo el tratamiento de datos

Solución de problemas

Problemas habituales y soluciones

Problema: Los servicios se inician incluso cuando se deniega

el consentimiento. Causas fundamentales:
  • Falta la verificación del consentimiento antes de la inicialización del servicio
  • Asignación incorrecta de ID de proveedor
Soluciones:
  • Añade una verificación de consentimiento explícito antes de la inicialización de TODOS los servicios de terceros.
  • Comprueba que los ID de los proveedores coincidan con los de la Lista global de proveedores
  • Implementa una sincronización adecuada entre el consentimiento y la inicialización del servicio
  • Ejemplos claros de situaciones en las que se revoca el consentimiento
Problema: La capa de consentimiento nunca aparece
. Posibles causas:
  • Configuración incorrecta de CMP (ID erróneo, dominio, etc.)
  • Problemas de conectividad de red
  • El usuario se encuentra fuera de la región geográfica objetivo
  • Problemas de integración de aplicaciones
Pasos de depuración:
  • Comprueba que la configuración de CMP coincida con los ajustes de la cuenta
  • Comprueba la conectividad de la red y la accesibilidad al servidor CMP
  • Comprueba los registros de la consola en busca de mensajes de error
  • Prueba con la capa de consentimiento de apertura forzada para verificar la integración
  • Confirma la configuración de la segmentación geográfica en el panel de control de CMP

Lista de verificación de prioridades de implementación

Alta prioridad (debe completarse antes del lanzamiento):
  • Verificación del consentimiento implementada antes de la inicialización de TODOS los servicios de terceros
  • Gestión adecuada de los errores por tiempo de espera, problemas de red y de configuración
  • Se mantiene la funcionalidad básica de la aplicación cuando no se puede determinar el consentimiento
  • Todas las identificaciones de proveedor verificadas y correctamente asignadas a los servicios reales
Mejoras en curso:
  • Realiza un seguimiento de las métricas en tu panel de control de CMP para conocer las tasas de éxito del consentimiento
  • Pruebas A/B para la optimización de la capa de consentimiento
  • Integración con marcos de cumplimiento adicionales
  • Mejora de la información al usuario sobre las opciones de privacidad

Recuerda: ante cualquier duda sobre los requisitos de consentimiento, opta siempre por el enfoque que ofrezca mayor protección de la privacidad. Es mejor pecar de precavido que infringir la privacidad de los usuarios o los requisitos normativos.

 

We do our best to keep this purely informative documentation up to date. However, if you notice that any of these guides need a little touch-up, let us know!