Privacy Manifest — qué es, archivo PrivacyInfo.xcprivacy y requisitos

Autor: IT Sectr Publicado: 2026-05-20 Tiempo de lectura: 9 min

Privacy Manifest (PrivacyInfo.xcprivacy) es un archivo que todas las aplicaciones y SDK de terceros deben incluir en la compilación de iOS a partir de la primavera de 2024. Apple exige declarar las razones del uso de API protegidas (Required Reason API) y los tipos de datos recopilados. Según la Documentación para desarrolladores de Apple, cada binario dentro de la aplicación — destino principal, frameworks, dependencias de Swift Package Manager — debe contener su propio Privacy Manifest.

Puntos clave

  • Privacy Manifest — archivo XML PrivacyInfo.xcprivacy con declaración de razones de uso de API
  • Required Reason API — categorías de API que requieren indicación obligatoria del motivo
  • SDK Privacy Manifest — cada SDK de terceros debe incluir su propio manifiesto
  • Motivos (Reasons) — propósito específico del uso de API de la lista aprobada por Apple
  • Fecha límite — desde el 1 de mayo de 2024 todas las compilaciones nuevas deben incluir Privacy Manifest

¿Qué es Privacy Manifest?

Privacy Manifest es un archivo PrivacyInfo.xcprivacy en formato property list (XML) que declara qué tipos de datos recopila la aplicación y por qué utiliza ciertas API. Apple introdujo los manifiestos como parte de una iniciativa para aumentar la transparencia de la privacidad, similar a Privacy Nutrition Label, pero a nivel de código y binario.

El propósito principal del manifiesto es documentar el uso de las llamadas Required Reason API. Estas son categorías de API que pueden utilizarse para la toma de huella digital del dispositivo (fingerprinting), por lo que cada uso debe ir acompañado de una declaración de un motivo específico de la lista aprobada por Apple.

A partir del 1 de mayo de 2024, Apple rechaza las compilaciones que no contengan Privacy Manifest. Esto se aplica tanto a los destinos principales de la aplicación como a todos los SDK y dependencias integrados. Según WWDC 2023, el manifiesto es obligatorio para todas las aplicaciones distribuidas a través de App Store.

El manifiesto debe estar presente en cada binario, no solo en la aplicación principal, sino también en cada framework y biblioteca estática. Si un SDK de terceros no proporcionó un manifiesto, el desarrollador debe agregarlo manualmente o contactar al proveedor del SDK para obtener una actualización.

Por qué Apple introdujo Privacy Manifest

Antes de los manifiestos, los desarrolladores podían utilizar extensas API del sistema (acceso al sistema de archivos, fecha/hora, registros del sistema) sin una explicación transparente del propósito de uso. Esto creaba un riesgo de fuga de datos a través de SDK de terceros que podían recopilar información sin el conocimiento del desarrollador.

Según Mysk Inc. (2023), muchos SDK populares utilizaban API para la toma de huella digital del dispositivo sin necesidad explícita — por ejemplo, leyendo el tiempo de actividad para determinar la zona horaria o escaneando directorios para recopilar metadatos. Privacy Manifest obliga a declarar cada una de esas acciones.

Además de Required Reason API, el manifiesto incluye la sección NSPrivacyTracking — un indicador que señala si la aplicación usa rastreo (requiere ATT), y NSPrivacyCollectedDataTypes — una lista de tipos de datos recopilados en formato Privacy Nutrition Label.

Diferencia entre Privacy Manifest y Privacy Nutrition Label

Privacy Nutrition Label es una representación para el usuario en la página de la aplicación en App Store, que muestra qué datos recopila la aplicación. Privacy Manifest es un archivo técnico dentro del binario que Apple verifica automáticamente. Si los datos en el manifiesto no coinciden con las etiquetas en App Store Connect, Apple rechaza la compilación.

Por lo tanto, el manifiesto es la fuente de verdad para el sistema de verificación de Apple. Las etiquetas de privacidad se generan automáticamente a partir de él, pero el desarrollador debe mantener ambas representaciones actualizadas. Cambiar el manifiesto después de la publicación requiere enviar una nueva compilación para revisión.

Estructura de PrivacyInfo.xcprivacy

El archivo PrivacyInfo.xcprivacy utiliza el formato property list con un tipo raíz Dictionary. Las principales claves de nivel superior son: NSPrivacyTracking (Boolean), NSPrivacyTrackingDomains (Array), NSPrivacyCollectedDataTypes (Array), NSPrivacyAccessedAPITypes (Array).

Claves de nivel superior

La clave NSPrivacyTracking — un valor booleano que indica si la aplicación aplica rastreo (requiere ATT). Si es true, también debe especificar NSUserTrackingUsageDescription en Info.plist. La clave NSPrivacyTrackingDomains — un array de dominios donde se aplica el rastreo.

La clave NSPrivacyCollectedDataTypes — un array de diccionarios, cada uno describe un tipo de datos recopilados: categoría (NSPrivacyCollectedDataType), vinculación (NSPrivacyCollectedDataLinked), propósito (NSPrivacyCollectedDataTypePurposes). Los propósitos incluyen: publicidad de terceros, análisis, desarrollo de producto y personalización de contenido.

La clave NSPrivacyAccessedAPITypes — un array de diccionarios para cada categoría de Required Reason API: categoría (NSPrivacyAccessedAPITypeReasons) — un motivo específico de la lista aprobada por Apple, y NSPrivacyAccessedAPIType — el identificador de la categoría de API.

xml
<!-- PrivacyInfo.xcprivacy -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSPrivacyTracking</key>
    <false/>
    <key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

Categorías de datos en NSPrivacyCollectedDataTypes

Los tipos de datos se dividen en varias categorías: información de contacto (nombre, correo electrónico, teléfono), finanzas (datos de pago), identificadores (IDFA, ID de usuario), datos de uso (registros, clics), diagnóstico (registros de fallos) y contenido del usuario (fotos, videos, archivos). Cada categoría se marca adicionalmente como «vinculada al usuario» o «no vinculada».

Vinculada significa que los datos están relacionados con la cuenta del usuario; no vinculada significa que los datos están agregados o anonimizados. Esta marca afecta cómo Apple muestra la etiqueta de privacidad: los datos vinculados se marcan en amarillo, los no vinculados en verde.

Qué API requieren indicar motivos

Apple ha identificado varias categorías de API, cada uso de las cuales debe ir acompañado de un motivo específico de la lista aprobada. Un motivo es un código único, por ejemplo C617.1 o 35F9.1, que se corresponde con un propósito específico permitido por Apple.

Categorías principales de Required Reason API

La categoría NSPrivacyAccessedAPICategoryFileTimestamp incluye API para acceder a marcas de tiempo de archivos (creationDate, modificationDate). Motivos: C617.1 (sincronización de archivos), 3B52.1 (copia de seguridad), 0A2A.1 (antifraude).

La categoría NSPrivacyAccessedAPICategoryDiskSpace incluye API para verificar el espacio libre en disco (NSFileManager. Verificaciones (NSFileManager). Motivos: E174.1 (gestión de caché), 85F4.1 (descarga de contenido), B728.1 (diagnóstico).

La categoría NSPrivacyAccessedAPICategorySystemBootTime incluye API de acceso al tiempo de inicio del sistema (uptime). Solo un motivo: 35F9.1 (medición del tiempo de sesión para análisis). Cualquier otro uso se considera fingerprinting.

Lista completa de categorías de API

  • FileTimestamp — acceso a marcas de tiempo de archivos, permitido para sincronización y copia de seguridad
  • DiskSpace — verificación de espacio libre, permitido para gestión de caché y descargas
  • SystemBootTime — tiempo de actividad, permitido solo para análisis de sesiones
  • UserDefaults — acceso a UserDefaults de otras aplicaciones, completamente prohibido
  • ActiveKeyboards — lista de teclados activos, permitido para desarrolladores de IME
  • SystemAperture — tamaño de la muesca en la pantalla, permitido para aplicaciones de foto y AR

Cada categoría tiene de 1 a 5 motivos aprobados. El desarrollador debe elegir el motivo que mejor se corresponda con el uso real de la API. Proporcionar un motivo inexacto puede conllevar el rechazo de la compilación o la suspensión de la cuenta.

Requisitos para SDK de terceros

A partir del 1 de mayo de 2024, todos los SDK de terceros — tanto binarios como de código abierto — deben incluir un Privacy Manifest en su paquete. Apple verifica los manifiestos de todas las dependencias, y si al menos un SDK no tiene manifiesto, la compilación será rechazada.

Los SDK principales (Firebase, Adjust, AppsFlyer, Facebook SDK) ya han actualizado sus paquetes. Si su proyecto utiliza un SDK poco conocido, verifique su versión y, si es necesario, actualícelo o contacte al desarrollador. Una solución temporal es agregar un manifiesto para el SDK manualmente en el proyecto, pero no se recomienda debido a discrepancias durante las actualizaciones.

Cómo crear Privacy Manifest en Xcode

Puede crear PrivacyInfo.xcprivacy a través de la plantilla integrada en Xcode 15+ o manualmente. Consideremos ambas opciones.

Creación mediante Xcode 15

Xcode 15 incluye una plantilla Privacy Manifest: File → New → File → Resource → Privacy Manifest. Xcode crea un archivo con la estructura básica y completa NSPrivacyTracking y arrays vacíos para API y datos. Después de la creación, debe especificar manualmente los motivos para cada Required Reason API utilizada.

La plantilla agrega automáticamente el archivo al destino principal. Si el proyecto tiene múltiples destinos (Extensions, Watch app), debe agregar el manifiesto a cada uno. Xcode no verifica la presencia del manifiesto en las dependencias en tiempo de compilación, solo en la etapa de archivado.

swift
// AppDelegate: verificación del manifiesto en etapa de desarrollo
import Foundation

func validatePrivacyManifest() {
    guard let path = Bundle.main.path(
        forResource: "PrivacyInfo", ofType: "xcprivacy"
    ) else {
        print("PrivacyInfo.xcprivacy no encontrado")
        return
    }
    guard let dict = NSDictionary(contentsOfFile: path)
    else { return }
    print("Privacy manifest loaded: \(dict.count) keys")
}

Creación manual mediante XML

Puede crear PrivacyInfo.xcprivacy manualmente como un archivo XML property list común. Para ello, cree un archivo con el nombre PrivacyInfo.xcprivacy, escriba el encabezado plist estándar y agregue un diccionario raíz con las claves necesarias. Asegúrese de que el archivo esté agregado al destino (Target Membership).

El método manual es útil cuando necesita agregar un manifiesto a una biblioteca estática o dependencia de Package Manager sin usar la interfaz de Xcode. Después de la compilación, verifique que el archivo esté incluido en el binario mediante el comando nm o el archivado.

Validación del manifiesto antes de la publicación

Antes de enviar la compilación a App Store, debe verificar que Privacy Manifest sea correcto y completo. Apple proporciona varias herramientas de validación.

Validador integrado de Xcode

Al archivar un proyecto (Product → Archive), Xcode realiza la validación del manifiesto. Si se encuentra un error — manifiesto faltante, motivo incorrecto, categoría vacía — el archivado falla con un error. El registro de errores se muestra en el Issue navigator, indicando el SDK problemático y la categoría de API.

Se realiza una validación adicional en App Store Connect al cargar la compilación. Si la validación falla, la compilación es rechazada con un correo electrónico automático que contiene el identificador de la API problemática y la corrección recomendada.

Validación mediante línea de comandos

Para automatizar la validación, use scripts que analicen el binario en busca de uso de Required Reason API. Apple proporciona la herramienta libtool y scripts de verificación de símbolos, pero la comunidad ha desarrollado utilidades más convenientes.

bash
# Búsqueda de uso de API FileTimestamp en el binario
nm MyApp.app/MyApp | grep "NSFileCreationDate"

# Verificación de presencia de PrivacyInfo.xcprivacy en la aplicación
find MyApp.app -name "*.xcprivacy"

Errores comunes de validación

El error más común es la falta de un manifiesto en uno de los SDK. Incluso si el destino principal contiene un manifiesto, Apple verifica cada binario individualmente. El segundo más común es un código de motivo incorrecto: usar un motivo para una categoría de API con una API de otra categoría.

El tercer error es la declaración excesiva de API que en realidad no se utilizan. Los desarrolladores agregan todos los motivos posibles «por si acaso», lo que alerta a los revisores de Apple. Agregue solo las categorías que realmente se utilizan. Use el analizador estático de Xcode para verificar.

Preguntas frecuentes

¿Qué sucede si falta Privacy Manifest?

A partir del 1 de mayo de 2024, Apple rechaza cualquier compilación sin manifiesto. El error ocurre en la etapa de carga en App Store Connect. Las aplicaciones antiguas no se bloquean, pero las actualizaciones requieren la inclusión obligatoria del manifiesto.

¿Las aplicaciones de iPadOS necesitan Privacy Manifest?

Sí, el manifiesto es obligatorio para todas las plataformas Apple: iOS, iPadOS, macOS, tvOS, watchOS y visionOS. Los requisitos de Required Reason API son uniformes en todas las plataformas, aunque los conjuntos de API pueden diferir ligeramente.

¿Cómo agregar un manifiesto para un SDK de terceros?

Si el SDK no proporcionó un manifiesto, cree un archivo PrivacyInfo.xcprivacy separado y agréguelo al grupo del SDK en el proyecto. Especifique los motivos para las API que utiliza este SDK según la documentación del SDK.

¿Puede Apple rechazar una compilación por un motivo incorrecto?

Sí. Durante la verificación automática, Apple compara los motivos declarados con las llamadas reales a la API. La discrepancia conduce al rechazo. Durante la revisión manual, el revisor puede solicitar aclaraciones.

¿Se verifica Privacy Manifest para Swift Package Manager?

Sí, Apple verifica los manifiestos de todas las dependencias, incluido SPM. Los proveedores de paquetes deben incluir PrivacyInfo.xcprivacy en sus repositorios. Xcode advierte sobre manifiestos faltantes durante el archivado.

Resumen

  • Privacy Manifest — archivo obligatorio PrivacyInfo.xcprivacy para todas las aplicaciones y SDK desde 2024
  • Required Reason API — 6 categorías de API que requieren declaración del motivo específico de uso
  • Motivos — códigos únicos (C617.1, 35F9.1), cada categoría tiene 1-5 motivos aprobados
  • SDK — cada SDK de terceros debe incluir su propio manifiesto en el binario
  • Validación — Xcode verifica el manifiesto al archivar, App Store Connect al cargar
  • Plazos — desde el 1 de mayo de 2024 todas las compilaciones nuevas deben contener el manifiesto
  • Cree PrivacyInfo.xcprivacy mediante la plantilla de Xcode y declare solo las API realmente utilizadas

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también