App Bundle ID — es un identificador único de aplicación utilizado en los ecosistemas de Apple y Google para el registro, la firma y la distribución de un producto de software. Cada aplicación obtiene su Bundle ID al crear el proyecto, y este identificador permanece sin cambios durante todo su ciclo de vida. Según la Documentación para Desarrolladores de Apple, el Bundle ID se utiliza para vincular servicios, certificados y perfiles de aprovisionamiento.
Puntos clave
Bundle Identifier es una cadena que identifica de manera única una aplicación en el sistema operativo y en la tienda de aplicaciones. En iOS y macOS se llama Bundle ID, en Android — Package Name, aunque funcionalmente ambos cumplen el mismo rol: garantizar la unicidad de la aplicación en el dispositivo y en la tienda.
El sistema operativo utiliza el Bundle ID para diferenciar aplicaciones en el dispositivo. Dos aplicaciones con el mismo identificador no pueden instalarse simultáneamente — el sistema las trata como el mismo producto. Las tiendas de aplicaciones también verifican la unicidad del Bundle ID durante la publicación.
Apple introdujo el Bundle ID con el lanzamiento del iOS SDK en 2008. El formato de notación inversa de dominio fue tomado de Java (convención de nomenclatura de paquetes), donde se utiliza para evitar conflictos de nombres de clases. Google adoptó esta práctica para Android, garantizando coherencia en ambos ecosistemas móviles.
| Plataforma | Nombre del campo | Ejemplo |
|---|---|---|
| iOS/macOS | Bundle Identifier | com.example.myapp |
| Android | Package Name | com.example.myapp |
| watchOS | Bundle Identifier | com.example.myapp.watchkit |
| tvOS | Bundle Identifier | com.example.myapp.tvos |
El Bundle ID consta de varios segmentos separados por puntos. La primera parte es el identificador del desarrollador o la empresa (com, org, net). La segunda es el dominio de la empresa (example, google, apple). Los segmentos siguientes especifican el nombre de la aplicación y la plataforma.
Un Bundle ID típico tiene el formato com.company.appname. Apple recomienda usar la notación inversa de dominio para garantizar la unicidad global. Si la empresa no tiene dominio, se permite usar el email: com.example.myapp o org.example.myapp.
Apple admite Wildcard Bundle ID — una plantilla de identificador con asterisco: com.example.*. Esta plantilla permite usar un mismo App ID para múltiples aplicaciones de una misma empresa. El Wildcard ID es conveniente durante el desarrollo, pero no se recomienda para producción porque limita el uso de algunos servicios de Apple.
Limitaciones del wildcard: Las notificaciones Push, CloudKit, Compras Integradas (In-App Purchase) y Game Center requieren un Bundle ID explícito. Al usar la plantilla com.example.*, estos servicios no están disponibles. Para aplicaciones en producción, use siempre un Bundle ID explícito para garantizar la funcionalidad completa de todos los servicios de Apple.
Además del wildcard, Apple admite identificadores con prefijo que se asignan al equipo de desarrollo al registrarse en el Apple Developer Program. El prefijo (Team ID) se agrega automáticamente a todos los App ID y perfiles de aprovisionamiento. Dos Team ID diferentes pueden crear el mismo Bundle ID, pero en el dispositivo se consideran aplicaciones distintas.
El registro del Bundle ID es un paso obligatorio antes de publicar una aplicación. En el ecosistema de Apple, el registro se realiza en el Apple Developer Portal a través de la sección Certificates, Identifiers & Profiles. En Google Play, el Bundle ID se especifica al crear la aplicación en la consola de desarrollador.
En el portal Apple Developer, seleccione la sección Identifiers, haga clic en el botón Register y especifique el tipo de App ID. Ingrese el nombre exacto del Bundle ID y seleccione las capacidades necesarias: Push Notifications, CloudKit, Sign in with Apple. Después del registro, el identificador estará disponible para crear perfiles de aprovisionamiento.
// Verificación de Bundle ID en el código de la aplicación
let bundleID = Bundle.main.bundleIdentifier
print("Current Bundle ID: \(bundleID ?? "unknown")")
// Verificación de Bundle ID para condiciones de compilación
if bundleID == "com.example.app.production" {
// Configuración de producción
Analytics.shared.configure(.production)
}
Google Play Console no requiere un registro previo del Bundle ID. El identificador se especifica en el archivo build.gradle del módulo de la aplicación y debe ser único en todo Google Play. Después de crear la aplicación, es imposible cambiar el Package Name, así que elija el identificador cuidadosamente y verifique su unicidad mediante una búsqueda en Google Play. Google no libera los identificadores de aplicaciones eliminadas, por lo que un Bundle ID una vez ocupado permanece inaccesible para otros desarrolladores.
Al registrarse en App Store Connect, debe especificar un Bundle ID del conjunto existente de identificadores registrados. Si el identificador aún no está registrado en el portal Apple Developer, el sistema ofrecerá crearlo automáticamente. Después del registro, el Bundle ID se vincula al equipo y no puede transferirse a otra cuenta de desarrollador sin contactar al soporte de Apple. Cada Bundle ID puede tener múltiples perfiles de aprovisionamiento para diferentes entornos: Development, Ad Hoc, App Store.
Al registrar un Bundle ID para una aplicación iOS con extensiones, cada componente debe registrarse por separado. Las extensiones de widgets, teclados, Notification Service y Watch App tienen sus propios identificadores derivados del principal. App Store Connect los agrupa al crear un App Record, lo que permite publicar todos los componentes como una sola aplicación.
La configuración del Bundle ID en Xcode se realiza en varios lugares: Info.plist, Build Settings y Signing & Capabilities. El campo central es Bundle Identifier en el target de la aplicación. Todos los servicios de Apple, desde notificaciones Push hasta CloudKit, se vinculan a este identificador. Un Bundle ID incorrecto provoca errores de firma y la imposibilidad de publicar en App Store.
<!-- Info.plist — Bundle ID base del proyecto -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — variable PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode utiliza la variable PRODUCT_BUNDLE_IDENTIFIER en Build Settings. Se pueden establecer diferentes valores para distintas configuraciones de compilación: com.example.app.dev para Debug y com.example.app para Release. Esto es conveniente para instalar una versión de desarrollo junto con la versión de producción en el mismo dispositivo para realizar pruebas.
Si la aplicación tiene extensiones (Notification Service, Widget, Watch App), cada extensión obtiene su propio Bundle ID con un sufijo. Aplicación principal: com.example.app. Extensión de widget: com.example.app.widget. Watch App: com.example.app.watchkit. Cada identificador se registra por separado en el Apple Developer Portal y recibe su propio perfil de aprovisionamiento. Xcode gestiona automáticamente estas dependencias durante la compilación.
App Bundle ID (Apple) y Package Name (Google) son entidades similares con el mismo propósito pero diferentes reglas de uso en los ecosistemas iOS y Android. Ambos identificadores usan notación inversa de dominio y no pueden cambiarse después de la publicación en tiendas oficiales de aplicaciones.
En el ecosistema Apple, el Bundle ID está vinculado al perfil de aprovisionamiento y los certificados. Al cambiar de equipo de desarrollo, el Bundle ID se puede transferir entre cuentas a través de App Store Connect. En Android, el Package Name está estrictamente vinculado a la aplicación en Google Play y no se puede transferir entre cuentas de desarrollador.
| Característica | iOS Bundle ID | Android Package Name |
|---|---|---|
| Longitud máxima | Sin límite | 150 caracteres |
| Separador de segmentos | Punto (.) | Punto (.) |
| Caracteres permitidos | A-Z, a-z, 0-9, punto, guión | A-Z, a-z, 0-9, punto, guión bajo |
| Wildcard | Soportado (*) | No soportado |
| Uso en código | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
A pesar de las diferencias, ambos identificadores cumplen un rol crítico: sin ellos es imposible publicar una aplicación en una tienda oficial. Recomendación para proyectos multiplataforma — use el mismo identificador en las versiones iOS y Android para simplificar la integración con Firebase, Analytics y otros servicios. Esto también simplifica la navegación para el equipo de desarrollo: un identificador para ambos proyectos reduce la confusión al configurar CI/CD y la configuración de entornos.
Al desarrollar con Flutter o React Native, un identificador único es especialmente importante ya que la base de código es compartida y muchas herramientas de compilación automatizada esperan el mismo nombre de paquete para ambas plataformas. Un proyecto de Firebase también se vincula a un único identificador para iOS y Android, simplificando la configuración de analíticas y reportes de fallos.
Preguntas frecuentes
Cambiar el Bundle ID después de la publicación en App Store o Google Play es imposible. El sistema tratará el nuevo identificador como una aplicación completamente diferente. Para actualizar un producto existente, el Bundle ID debe permanecer sin cambios durante todo el ciclo de vida de la aplicación.
Un dispositivo iOS o Android no permitirá instalar una segunda aplicación con el mismo identificador sobre la primera. El sistema mostrará un error y sugerirá eliminar la aplicación existente. En las tiendas, la publicación con un Bundle ID duplicado también se bloqueará.
Use la notación inversa de dominio de su empresa: com.companyname.appname. Evite guiones y caracteres especiales. Si la aplicación tiene extensiones, agregue sufijos separados por puntos. Asegúrese de que el identificador sea único y no esté ocupado por otro desarrollador.
Sí, cada extensión — widget, Watch App, Notification Service — requiere su propio Bundle ID. Los identificadores forman una jerarquía: com.example.app como base, com.example.app.widget para el widget, com.example.app.watchkit para Watch. Todos se registran por separado en el Apple Developer Portal y comparten un App ID común con la aplicación principal.
Bundle ID es una cadena identificadora en el código de la aplicación. App ID es un objeto en el Apple Developer Portal que combina un Bundle ID con un conjunto de servicios habilitados (capabilities). App ID se crea basándose en el Bundle ID y se utiliza para generar perfiles de aprovisionamiento.
Resumen
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.
Lea también