Info.plist: qué es, claves obligatorias y configuración de inicio

Autor: IT Sectr Publicado: 2026-05-31 Tiempo de lectura: 8 min

Info.plist es un archivo de configuración XML para aplicaciones iOS y macOS que contiene metadatos, permisos y ajustes de inicio. El sistema lo procesa antes de la inicialización del código de la aplicación. Según Apple Developer, 2025, sin un Info.plist correctamente configurado, la aplicación no supera la revisión de App Store. Info.plist define el identificador del paquete, la versión de compilación, los permisos solicitados y las orientaciones de pantalla admitidas.

Puntos clave

  • Info.plist es un diccionario XML con claves de configuración de aplicaciones iOS/macOS en formato plist
  • Bundle identifier es un identificador único de la aplicación en el ecosistema Apple para firma y servicios
  • Claves de privacidad (NSCameraUsageDescription) son obligatorias para acceder a cámara, micrófono y geolocalización
  • Custom URL schemes se configuran mediante la clave CFBundleURLTypes para enlaces profundos
  • UIRequiredDeviceCapabilities establece los requisitos mínimos del dispositivo para la instalación desde App Store

Qué es Info.plist

Info.plist es un archivo en formato XML cuyo elemento raíz es dict, que contiene pares clave-valor en forma de property list. Se encuentra dentro del paquete de la aplicación y el sistema lo lee en cada inicio antes de ejecutar el código. El formato plist admite cadenas, números, arrays, diccionarios, fechas y valores booleanos, lo que permite describir configuraciones complejas.

Apple usa Info.plist para definir la identidad, las capacidades y los requisitos de la aplicación. Cambiar algunas claves requiere reconstruir el paquete, ya que afectan a los metadatos que App Store verifica al subir una compilación. Por ejemplo, cambiar CFBundleVersion o CFBundleIdentifier después de la publicación puede romper el proceso de actualización de la aplicación, ya que App Store Connect usa estos valores para identificar las versiones.

Las claves básicas se crean automáticamente al crear un proyecto en Xcode, pero la mayoría de los ajustes se añaden manualmente a medida que evoluciona la funcionalidad de la aplicación. Xcode ofrece un editor gráfico de Info.plist con listas desplegables para las claves estándar, lo que reduce el riesgo de errores tipográficos. Sin embargo, para configuraciones complejas como Scene Manifest o Background Modes, se recomienda editar el XML directamente.

Claves obligatorias de Info.plist

Algunas claves de Info.plist son obligatorias para publicar en App Store. Su ausencia provoca el rechazo de la compilación en la fase de validación. Apple verifica estas claves automáticamente al subir un archivo mediante Xcode Organizer o Transporter. El desarrollador debe asegurarse de que todos los campos obligatorios estén correctamente rellenados antes de enviar a revisión.

Identificadores del paquete

La clave CFBundleIdentifier establece un identificador único de la aplicación en notación de dominio inverso (com.company.appname). Se usa para la firma de código, notificaciones push, CloudKit, App Groups y muchos otros servicios de Apple. Cambiar el identificador después de la publicación hace que App Store lo considere una aplicación nueva, y los usuarios existentes no recibirán la actualización. Por lo tanto, el identificador debe permanecer inalterado durante todo el ciclo de vida de la aplicación.

xml
<key>CFBundleIdentifier</key>
<string>com.itsectr.myapp</string>

Versión de la aplicación

Las claves CFBundleShortVersionString (versión mostrada) y CFBundleVersion (número de compilación) las usa App Store Connect y el sistema para gestionar las actualizaciones. La versión se indica en formato major.minor.patch. El número de compilación debe incrementarse con cada compilación subida a App Store Connect, incluso si la versión de la aplicación no cambia. Apple usa CFBundleVersion para determinar si una compilación es nueva o duplica una ya subida. Si el número de compilación coincide con uno ya subido, se devuelve el error ITMS-90161.

xml
<key>CFBundleShortVersionString</key>
<string>1.2.0</string>
<key>CFBundleVersion</key>
<string>42</string>

Orientaciones de interfaz admitidas

Las claves UISupportedInterfaceOrientations definen las orientaciones de pantalla admitidas para iPhone. Para iPad se usa una clave separada UISupportedInterfaceOrientations~ipad con el sufijo del dispositivo. Cada orientación se especifica como cadena: UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight, UIInterfaceOrientationPortraitUpsideDown. Si la aplicación solo admite orientación vertical y no es solo para iPhone, App Store rechazará la compilación si solo se especifica vertical para iPad.

xml
<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
</array>

Permisos y claves de privacidad

Desde iOS 10, Apple exige una descripción para cada permiso solicitado mediante claves con el prefijo NS (NeXTStep). La descripción se muestra al usuario en un diálogo del sistema al solicitar por primera vez acceso a APIs privadas. La ausencia de la clave NS correspondiente al llamar a una API que requiere permiso provoca un cierre inmediato de la aplicación con una excepción que solo se registra en los registros de fallos.

ClavePropósito
NSCameraUsageDescriptionAcceso a la cámara para fotos y vídeo
NSPhotoLibraryUsageDescriptionAcceso a la biblioteca de fotos
NSLocationWhenInUseUsageDescriptionGeolocalización durante el uso
NSMicrophoneUsageDescriptionAcceso al micrófono para grabar audio
NSContactsUsageDescriptionAcceso a los contactos del dispositivo

Cada clave de privacidad debe contener una descripción comprensible para el usuario del motivo de la solicitud. Los textos vacíos o genéricos, como “Para el funcionamiento de la aplicación” o “Se necesita acceso”, provocan el rechazo de App Store. La descripción debe explicar la funcionalidad concreta: “El acceso a la cámara es necesario para escanear códigos QR y crear fotos de perfil.” Se recomienda usar versiones localizadas de las descripciones mediante archivos InfoPlist.strings para cada idioma compatible.

La ausencia de una clave NS necesaria al llamar a una API que accede a datos privados provoca un cierre forzado de la aplicación. El sistema finaliza el proceso con una excepción que solo se nota en los registros de informes de fallos de Xcode o Firebase Crashlytics. El usuario solo ve un cierre repentino de la aplicación sin ninguna explicación. Por lo tanto, antes de añadir nueva funcionalidad que use la cámara, el micrófono o la geolocalización, primero debe añadirse la clave de privacidad correspondiente en Info.plist y luego implementar la llamada a la API.

Custom URL Schemes y App Links

La clave CFBundleURLTypes registra esquemas URL personalizados para enlaces profundos en la aplicación. Esto permite abrir la aplicación desde el navegador, el correo electrónico u otras aplicaciones mediante enlaces como myapp://profile/123. Cada esquema identifica la aplicación de forma única: si dos aplicaciones registran el mismo esquema, el sistema muestra al usuario un diálogo para elegir cuál usar.

xml
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.itsectr.myapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
    </dict>
</array>

Para admitir Universal Links, se requiere la clave com.apple.developer.associated-domains en el archivo Entitlements, no en Info.plist. Los Universal Links solo funcionan si existe un archivo apple-app-site-association configurado en el servidor que vincule el dominio con la aplicación. A diferencia de los esquemas URL personalizados, los Universal Links no muestran un diálogo de confirmación ni entran en conflicto con otras aplicaciones, ya que usan enlaces HTTPS en lugar de esquemas personalizados. Sin embargo, requieren un dominio con un certificado SSL válido.

Los esquemas personalizados pueden entrar en conflicto con los esquemas estándar de iOS. Se recomienda usar esquemas de al menos 4 caracteres para minimizar colisiones con otras aplicaciones. Por ejemplo, el esquema “fb” es demasiado corto y puede generar conflictos. Es mejor usar notación inversa: myapp:// en lugar de app://. También hay que tener en cuenta que si la aplicación se elimina pero otra aplicación ha registrado el mismo esquema, el usuario puede experimentar un comportamiento inesperado al navegar por un enlace.

Configuración de inicio y modos en segundo plano

La clave UIBackgroundModes declara las capacidades en segundo plano de la aplicación. Cada modo requiere una descripción correspondiente en Info.plist y confirmación en las capacidades del proyecto Xcode. Sin especificar un modo, el sistema puede finalizar forzosamente la tarea en segundo plano tras 30 segundos o cuando falten recursos.

xml
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
    <string>remote-notification</string>
    <string>location</string>
    <string>processing</string>
</array>

La clave UIApplicationSupportsMultipleScenes activa la compatibilidad con la multitarea en iPad y Mac Catalyst. Sin esta clave, la aplicación no puede usar SwiftUI ScenePhase o UIKit UISceneDelegate para gestionar varias ventanas. En iPadOS, los usuarios pueden abrir varias ventanas de la misma aplicación, arrastrar contenido entre ellas y usar Split View. Si la aplicación no admite el modo multiventana, establecer esta clave en false desactiva la funcionalidad correspondiente.

La clave LSRequiresIPhoneOS impide la instalación de la aplicación en iPad. Se usa para aplicaciones solo para iPhone que no admiten la interfaz de iPad o no se han adaptado a una pantalla grande. Sin embargo, Apple no recomienda usar esta clave innecesariamente, ya que los usuarios esperan que las aplicaciones funcionen en todos los dispositivos con iOS y iPadOS. Si la aplicación se limita a iPhone, asegúrese de que este requisito esté justificado técnicamente y se indique en la descripción de App Store.

La clave UIViewControllerBasedStatusBarAppearance controla el estilo de la barra de estado. Si se establece en NO, el estilo de la barra de estado se define globalmente mediante la clave UIStatusBarStyle de Info.plist. Si YES (valor predeterminado desde iOS 7), cada ViewController puede gestionar su propia barra de estado sobrescribiendo preferredStatusBarStyle. Para aplicaciones modernas, se recomienda mantener YES para tener diferentes estilos de barra de estado en distintas pantallas, por ejemplo claro sobre fondo oscuro y oscuro sobre fondo claro.

La clave UIApplicationExitsOnSuspend obliga a la aplicación a finalizarse por completo al entrar en segundo plano en lugar de suspenderse. Se usa raramente, solo para aplicaciones con altos requisitos de seguridad: aplicaciones bancarias o que manejan datos confidenciales. En este caso, el usuario pierde la capacidad de volver rápidamente a la aplicación y cada inicio se produce desde un estado limpio. App Store puede solicitar una justificación para usar esta clave durante la revisión.

La clave NSAppTransportSecurity gestiona las conexiones de red de la aplicación. Desde iOS 9, App Transport Security (ATS) bloquea todas las conexiones HTTP por defecto, exigiendo HTTPS. Para permitir temporalmente peticiones HTTP a dominios específicos, se usa el diccionario NSExceptionDomains dentro de NSAppTransportSecurity. Para desarrollo, se permite la desactivación completa de ATS mediante NSAllowsArbitraryLoads = true, pero Apple exige una justificación y no permite dichas compilaciones sin un motivo válido. En compilaciones de producción, ATS debe estar activado para todos los dominios que manejen datos de usuario.

Preguntas frecuentes

¿Dónde encontrar Info.plist en un proyecto de Xcode?

El archivo Info.plist se encuentra en la carpeta del proyecto con el nombre que coincide con el nombre de la aplicación. En Xcode se muestra en el navegador de proyectos dentro del grupo Supporting Files con un icono de libro azul. También se puede encontrar mediante la búsqueda de Spotlight en el proyecto.

¿Se puede editar Info.plist manualmente?

, Info.plist se puede editar en cualquier editor de texto o mediante la interfaz gráfica de Xcode. La edición manual ofrece control total sobre el contenido, pero requiere atención a la sintaxis XML: cada directiva de apertura <key> debe tener su correspondiente </key>, y los tipos de datos deben coincidir con los que Apple espera.

¿Qué es Info.plist en proyectos SwiftUI?

En proyectos SwiftUI, Info.plist funciona igual que en proyectos UIKit. Adicionalmente, puede ser necesaria la clave UIApplicationSceneManifest para la configuración de escenas si el proyecto no usa el protocolo App para la gestión de escenas. El protocolo App de SwiftUI genera automáticamente la configuración de escenas, pero la personalización requiere añadir claves manualmente.

¿Cómo añadir una clave personalizada en Info.plist?

Abra Info.plist en Xcode, haga clic en el botón más e introduzca el nombre de la clave. Para claves personalizadas, use un prefijo de empresa para evitar conflictos con las claves del sistema de Apple, por ejemplo ITSCustomKey en lugar de simplemente CustomKey. El tipo de valor (String, Number, Array, Dictionary) se elige según el formato de datos esperado.

¿Por qué App Store rechazó mi compilación por culpa de Info.plist?

Razones típicas: falta de claves de privacidad para los permisos solicitados, CFBundleIdentifier incorrecto, discrepancia de versión entre Info.plist y App Store Connect, valores vacíos en claves NS. Revise todas las claves NS para las API utilizadas y asegúrese de que cada descripción contenga una explicación significativa en el idioma de localización de la aplicación.

Resumen

  • Info.plist es una configuración XML para aplicaciones iOS/macOS con metadatos, permisos y ajustes de inicio
  • CFBundleIdentifier y CFBundleVersion son claves obligatorias para la identificación y publicación en App Store
  • Claves de privacidad (NSCameraUsageDescription) son obligatorias para acceder a cámara, micrófono y otras APIs privadas
  • Custom URL schemes se configuran mediante CFBundleURLTypes, Universal Links mediante Entitlements y apple-app-site-association
  • UIBackgroundModes declara capacidades en segundo plano para un correcto funcionamiento en segundo plano
  • La ausencia de claves obligatorias provoca fallos de la aplicación o el rechazo de la compilación en App Store
  • La edición de Info.plist está disponible mediante la interfaz de Xcode o un editor de texto con control de sintaxis XML

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