9 min de lectura

App Tracking Transparency en iOS: cómo pedir el permiso de rastreo (con AdMob)

¿Tu app de iOS muestra anuncios o usa SDKs de atribución? Te explicamos qué es App Tracking Transparency (ATT), cuándo necesitas el aviso de rastreo, cómo añadir NSUserTrackingUsageDescription y pedir el permiso (también con el mensaje IDFA de AdMob), cómo probarlo y qué revisar si Apple rechaza tu app por la guideline 5.1.2.

Portada: Permiso de rastreo en iOS, App Tracking Transparency (ATT), con tarjeta Permiso de rastreo que muestra el texto del permiso «Anuncios más relevantes» y las filas Info.plist lista, mensaje IDF

Si tu app de iOS muestra anuncios de AdMob, usa un SDK de atribución o comparte datos con redes publicitarias, tarde o temprano te toparás con App Tracking Transparency (ATT) en iOS: el aviso del sistema que pregunta al usuario si permite que la app rastree su actividad en apps y sitios de otras empresas. Implementarlo mal es una de las causas típicas de rechazo por la guideline 5.1.2. En esta guía verás qué cuenta como rastreo, cuándo necesitas el aviso, cómo configurarlo paso a paso (con o sin AdMob), cómo probarlo y qué revisar si Apple rechaza tu app.

Qué es App Tracking Transparency en iOS

App Tracking Transparency es un framework de Apple. Desde iOS 14.5 (también iPadOS 14.5 y tvOS 14.5) necesitas el permiso del usuario a través de ATT para rastrearlo o acceder al identificador de publicidad del dispositivo (IDFA). Si el usuario no da permiso, el IDFA que recibe tu app es una cadena de ceros.

Para Apple, rastrear es vincular datos del usuario o del dispositivo recopilados en tu app con datos de apps, sitios web o fuentes offline de otras empresas para publicidad dirigida o para medir anuncios. También cuenta como rastreo compartir esos datos con un data broker. Algunos ejemplos que da Apple:

  • Mostrar anuncios personalizados basados en datos recopilados en apps y webs de terceros.
  • Compartir correos, IDs de publicidad u otros identificadores con una red publicitaria que los usa para hacer retargeting.
  • Incluir un SDK de terceros que combina los datos de tu app con los de otras apps para segmentar o medir anuncios, aunque tú no lo uses para eso.

No es rastreo, según Apple, vincular datos solo dentro del dispositivo sin enviarlos fuera de forma identificable, ni compartirlos con un data broker exclusivamente para prevenir fraude o por seguridad. El identificador para el proveedor (IDFV) puede usarse para analítica entre tus propias apps sin ATT, siempre que no lo combines para rastrear al usuario en apps de otras empresas.

Cuándo necesitas pedir el permiso de ATT

Hazte estas preguntas antes de escribir código:

  1. ¿Usas AdMob u otra red con anuncios personalizados? Si quieres que el SDK envíe el IDFA, necesitas ATT. Si el usuario lo rechaza, AdMob sigue sirviendo anuncios, pero sin IDFA.
  2. ¿Tienes SDKs de atribución, analítica de anuncios o deep linking diferido de terceros? Apple indica que, si pasan identificadores únicos entre apps de distintas empresas para publicidad o medición, también necesitas ATT.
  3. ¿Tu app solo usa analítica propia o de primera parte, sin cruzar datos con terceros? Entonces probablemente no necesites el aviso, y mostrarlo sin motivo solo confunde al usuario.

Recuerda que eres responsable de todo el código que incluyes, también el de los SDK. Si no sabes qué hace un SDK con los datos, consulta su documentación o su manifiesto de privacidad antes de decidir. Si estás empezando con anuncios, revisa primero qué es AdMob y cómo funciona.

Cómo implementar App Tracking Transparency paso a paso

1. Añade el texto del permiso en Info.plist

Agrega la clave NSUserTrackingUsageDescription con un texto claro sobre el uso que harás de los datos. Ese texto aparece dentro del aviso del sistema:

<key>NSUserTrackingUsageDescription</key>
<string>Usamos este identificador para mostrarte anuncios más relevantes.</string>

Escríbelo en el idioma de tu app y localízalo si publicas en varios países. Evita textos genéricos como «Necesitamos tu permiso»: la guideline 5.1.1 pide que los textos de propósito describan con claridad y por completo el uso de los datos.

2. Enlaza el framework y pide la autorización

Enlaza AppTrackingTransparency y llama a ATTrackingManager.requestTrackingAuthorization. Google recomienda esperar a la respuesta antes de cargar anuncios, para que el SDK pueda usar el IDFA si el usuario acepta:

import AppTrackingTransparency

func pedirPermisoDeRastreo() {
    ATTrackingManager.requestTrackingAuthorization { estado in
        // Aquí ya puedes inicializar y cargar los anuncios
    }
}

El estado puede ser notDetermined (aún no se preguntó), restricted, denied o authorized. Solo se muestra el aviso cuando el estado es notDetermined; después, la llamada devuelve la decisión guardada.

3. Elige el momento adecuado

Puedes mostrar el aviso cuando quieras, pero el sistema solo lo presenta si la app está activa en primer plano. Una práctica habitual es pedirlo después de que la pantalla principal ya se ve, no en el arranque. Apple permite mostrar antes una pantalla explicativa propia, siempre que sea transparente sobre el uso de los datos y no presione al usuario.

4. Si usas AdMob: mensaje IDFA con UMP

AdMob ofrece un mensaje explicativo de IDFA a través del SDK User Messaging Platform (UMP). Lo creas en AdMob, en Privacidad y mensajería, y UMP lo muestra justo antes del aviso de ATT. Ten en cuenta que:

  • Igual debes añadir NSUserTrackingUsageDescription en Info.plist.
  • El mensaje debe estar publicado y asignado a tu app; si no, no aparece.
  • Si también tienes el mensaje de GDPR para Europa, revisa en la ayuda de AdMob qué mensaje ve cada usuario.

5. Declara el rastreo de forma coherente

ATT no vive solo en el código. Lo que haces con los datos debe coincidir en tres lugares:

Lo que Apple no permite con ATT

Estas reglas salen de las App Review Guidelines y de las preguntas frecuentes de Apple sobre privacidad:

  • No condicionar funciones al permiso. No puedes bloquear contenido ni ofrecer premios, monedas o descuentos a cambio de aceptar el rastreo (guideline 5.1.2(i)).
  • No usar otro identificador si el usuario dijo que no. Un correo o teléfono con hash para rastrear a quien rechazó ATT tampoco está permitido.
  • No hacer fingerprinting. Derivar datos del dispositivo para identificarlo de forma única está prohibido, también si lo hace un SDK que incluyes.
  • No manipular la respuesta. Puedes añadir pantallas de consentimiento propias para cumplir leyes locales, pero siempre debes respetar lo que el usuario eligió en ATT (guideline 5.1.1(iv)).
  • Webviews incluidas. Si rastreas dentro de una webview que forma parte de la funcionalidad de tu app, también necesitas el permiso.

Cómo probar el aviso de ATT

El aviso aparece una sola vez por instalación. Para volver a verlo durante las pruebas, desinstala y reinstala la app. Revisa además en el iPhone de pruebas que esté activado Ajustes > Privacidad y seguridad > Rastreo > Permitir que las apps soliciten rastrearte: si está apagado, el aviso no se muestra y el estado vuelve como denegado.

Si el usuario ya rechazó el permiso, no puedes volver a mostrar el aviso. Lo que sí permite Apple es ofrecer un acceso directo a los Ajustes de tu app para que cambie su preferencia.

Rechazo por guideline 5.1.2: qué revisar

Si App Review rechaza tu app por Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing, revisa en este orden:

  1. Tus etiquetas de privacidad dicen que rastreas, pero la app no muestra el aviso. Pide el permiso con ATT o corrige las etiquetas si en realidad no rastreas.
  2. El aviso no aparece en el dispositivo del revisor. Comprueba que lo pides con la app activa, que la clave está en Info.plist y que el mensaje de UMP está publicado.
  3. Recompensas o bloqueos ligados al permiso. Quítalos.
  4. Un SDK rastrea sin que lo sepas. Revisa sus manifiestos y su documentación.

Cuando corrijas, responde en App Store Connect explicando dónde y cuándo aparece el aviso. Para otros motivos de rechazo, consulta la guía de app rechazada en App Store.

ATT en la Unión Europea

Apple anunció que, desde iOS 27.2, en la Unión Europea podrás usar una versión alternativa del aviso con un botón de «Información adicional», y volver a preguntar un año después de la última decisión del usuario. Las reglas sobre cuándo pedir el permiso no cambian.

Preguntas frecuentes

¿Es obligatorio App Tracking Transparency para usar AdMob?

No es obligatorio para mostrar anuncios: si no pides el permiso o el usuario lo rechaza, AdMob sigue sirviendo anuncios sin IDFA. Sí lo necesitas si quieres que los anuncios usen el IDFA.

¿Por qué no aparece el aviso de ATT?

Las causas habituales son: falta NSUserTrackingUsageDescription, ya respondiste antes (reinstala), la app no estaba activa al pedirlo o el ajuste «Permitir que las apps soliciten rastrearte» está apagado.

¿Qué pasa si el usuario rechaza el rastreo?

El IDFA será una cadena de ceros y no puedes rastrearlo con otros identificadores. La app debe funcionar igual.

¿Necesito ATT si solo uso analítica propia?

Si los datos no se cruzan con los de otras empresas para publicidad ni se comparten con data brokers, Apple no lo considera rastreo.

Publica tu app de iOS sin sorpresas con AppConsol

Antes de enviar tu app a revisión, asegúrate de que la política de privacidad refleje el rastreo y los SDK publicitarios. En AppConsol puedes crearla gratis con el generador de política de privacidad y preparar las capturas de tu ficha con el generador de screenshots para iOS.

Sigue aprendiendo