App Bundle ID — что это, идентификатор приложения и регистрация

Автор: IT Sectr Опубликовано: 2026-04-17 Время чтения: 8 мин

App Bundle ID — это уникальный идентификатор приложения, используемый в экосистемах Apple и Google для регистрации, подписи и распространения программного продукта. Каждое приложение получает свой Bundle ID при создании проекта, и этот идентификатор остаётся неизменным на всём жизненном цикле. По данным Apple Developer Documentation, Bundle ID используется для привязки сервисов, сертификатов и профилей подписи.

Главное

  • App Bundle ID — глобальный идентификатор, уникальный для каждого приложения в магазине
  • Формат основан на reverse domain notation: com.company.appname
  • Регистрация выполняется в App Store Connect и Google Play Console
  • Изменение Bundle ID после публикации невозможно без создания нового приложения
  • Привязка сервисов (Push, CloudKit, Firebase) осуществляется через Bundle ID

Что такое App Bundle ID

Bundle Identifier — это строка, которая однозначно идентифицирует приложение в операционной системе и магазине приложений. В iOS и macOS он называется Bundle ID, в Android — Package Name, хотя функционально оба выполняют одну роль: обеспечивают уникальность приложения на устройстве и в сторе.

Назначение Bundle ID

Операционная система использует Bundle ID для разграничения приложений на устройстве. Два приложения с одинаковым идентификатором не могут быть установлены одновременно — система воспринимает их как один и тот же продукт. Магазины приложений также проверяют уникальность Bundle ID при публикации.

История и стандарты именования

Apple ввела Bundle ID с выходом iOS SDK в 2008 году. Формат reverse domain notation был заимствован из Java (package naming convention), где он используется для предотвращения конфликтов имён классов. Google перенял эту практику для Android, что обеспечило единообразие в обеих мобильных экосистемах.

ПлатформаНазвание поляПример
iOS/macOSBundle Identifiercom.example.myapp
AndroidPackage Namecom.example.myapp
watchOSBundle Identifiercom.example.myapp.watchkit
tvOSBundle Identifiercom.example.myapp.tvos

Как устроен формат Bundle ID

Bundle ID состоит из нескольких сегментов, разделённых точками. Первая часть — идентификатор разработчика или компании (com, org, net). Вторая — домен компании (example, google, apple). Последующие сегменты уточняют название приложения и платформы.

Структура Bundle ID

Типичный Bundle ID выглядит как com.company.appname. Apple рекомендует использовать обратную запись доменного имени, чтобы гарантировать глобальную уникальность. Если у компании нет домена, допускается использование email: com.example.myapp или org.example.myapp.

  • Сегмент 1 — TLD в обратном порядке: com, org, io, net
  • Сегмент 2 — домен компании или разработчика: google, apple, mycompany
  • Сегмент 3 — название приложения: maps, mail, notes
  • Дополнительно — платформа или расширение: watchkit, todaywidget

Wildcard Bundle ID

Apple поддерживает Wildcard Bundle ID — шаблон идентификатора со звёздочкой: com.example.*. Такой шаблон позволяет использовать один App ID для нескольких приложений одной компании. Wildcard ID удобен на этапе разработки, но не рекомендуется для продакшна, так как ограничивает использование некоторых сервисов Apple.

Ограничения wildcard: Push-уведомления, CloudKit, In-App Purchase и Game Center требуют точного (explicit) Bundle ID. При использовании шаблона com.example.* эти сервисы недоступны. Для продакшн-приложений всегда используйте explicit Bundle ID, чтобы обеспечить полную функциональность всех сервисов Apple.

Помимо wildcard, Apple поддерживает префиксные идентификаторы, которые назначаются команде разработчиков при регистрации в Apple Developer Program. Префикс (Team ID) автоматически добавляется ко всем App ID и профилям подписи. Два разных Team ID могут создать одинаковый Bundle ID, но на устройстве они считаются разными приложениями.

Регистрация Bundle ID в консолях

Регистрация Bundle ID — обязательный этап перед публикацией приложения. В экосистеме Apple регистрация выполняется в Apple Developer Portal через раздел Certificates, Identifiers & Profiles. В Google Play Bundle ID указывается при создании приложения в консоли разработчика.

Регистрация в Apple Developer Portal

На портале Apple Developer выберите раздел Identifiers, нажмите кнопку Register и укажите тип App ID. Введите точное название Bundle ID и выберите необходимые capabilities: Push Notifications, CloudKit, Sign in with Apple. После регистрации идентификатор становится доступным для создания профилей подписи.

swift
// Проверка Bundle ID в коде приложения
let bundleID = Bundle.main.bundleIdentifier
print("Current Bundle ID: \(bundleID ?? "unknown")")

// Проверка Bundle ID для условий сборки
if bundleID == "com.example.app.production" {
    // Продакшн-конфигурация
    Analytics.shared.configure(.production)
}

Регистрация в Google Play Console

Google Play Console не требует предварительной регистрации Bundle ID. Идентификатор указывается в файле build.gradle модуля приложения и должен быть уникальным в рамках всего Google Play. После создания приложения изменить Package Name невозможно, поэтому выбирайте идентификатор тщательно и проверьте его уникальность через поиск в Google Play. Google не освобождает идентификаторы удалённых приложений, поэтому занятый однажды Bundle ID остаётся недоступным для других разработчиков.

При регистрации в App Store Connect необходимо указать Bundle ID из существующего набора зарегистрированных идентификаторов. Если идентификатор ещё не зарегистрирован на портале Apple Developer, система предложит создать его автоматически. После регистрации Bundle ID привязывается к команде и не может быть перенесён на другой аккаунт разработчика без обращения в поддержку Apple. Каждый Bundle ID может иметь несколько профилей подписи для разных окружений: Development, Ad Hoc, App Store.

При регистрации Bundle ID для iOS приложения с расширениями потребуется зарегистрировать каждый компонент отдельно. Расширения виджетов, клавиатуры, Notification Service и Watch App имеют собственные идентификаторы, производные от основного. App Store Connect объединяет их в группу при создании App Record, что позволяет публиковать все компоненты как одно приложение.

Настройка Bundle ID в проекте Xcode

Настройка Bundle ID в Xcode выполняется в нескольких местах: Info.plist, Build Settings и Signing & Capabilities. Центральное поле — Bundle Identifier в таргете приложения. Все сервисы Apple, от Push-уведомлений до CloudKit, привязываются к этому идентификатору. Неправильно указанный Bundle ID приводит к ошибкам подписи и невозможности публикации в App Store.

Изменение Bundle ID в Xcode

xml
<!-- Info.plist — базовый Bundle ID проекта -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>

<!-- Build Settings — переменная PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->

Xcode использует переменную PRODUCT_BUNDLE_IDENTIFIER в Build Settings. Для разных конфигураций сборки можно задать разные значения: com.example.app.dev для Debug и com.example.app для Release. Это удобно для параллельной установки dev-версии рядом с продакшном на одном устройстве для тестирования.

Мультитаргетная конфигурация

Если приложение имеет расширения (Notification Service, Widget, Watch App), каждое расширение получает собственный Bundle ID с суффиксом. Основное приложение: com.example.app. Расширение для виджета: com.example.app.widget. Watch App: com.example.app.watchkit. Каждый идентификатор регистрируется отдельно в Apple Developer Portal и получает отдельный профиль подписи. Xcode автоматически управляет этими зависимостями при сборке.

Различия App Bundle ID и Package Name

App Bundle ID (Apple) и Package Name (Google) — это аналогичные сущности с одинаковым назначением, но разными правилами использования в экосистемах iOS и Android. Оба идентификатора используют reverse domain notation и не могут быть изменены после публикации в официальных магазинах приложений.

Функциональные отличия

В экосистеме Apple Bundle ID связан с профилем подписи и сертификатами. При смене команды разработчика Bundle ID можно перенести между аккаунтами через App Store Connect. В Android Package Name жёстко привязан к приложению в Google Play и не может быть перенесён между аккаунтами разработчика.

ХарактеристикаiOS Bundle IDAndroid Package Name
Максимальная длинаНе ограничена150 символов
Разделитель сегментовТочка (.)Точка (.)
Допустимые символыA-Z, a-z, 0-9, точка, дефисA-Z, a-z, 0-9, точка, подчёркивание
WildcardПоддерживается (*)Не поддерживается
Использование в кодеBundle.main.bundleIdentifierBuildConfig.APPLICATION_ID

Несмотря на различия, оба идентификатора выполняют критическую роль: без них невозможно опубликовать приложение в официальном магазине. Рекомендация для кросс-платформенных проектов — использовать одинаковый идентификатор в iOS и Android версиях, чтобы упростить интеграцию с Firebase, Analytics и другими сервисами. Это также упрощает навигацию для команды разработки: один идентификатор для обоих проектов снижает путаницу при настройке CI/CD и конфигурации окружений.

При разработке с использованием Flutter или React Native единый идентификатор особенно важен, так как кодовая база общая, и многие инструменты автоматической сборки ожидают одинаковое имя пакета для обеих платформ. Firebase-проект также привязывается к одному идентификатору для iOS и Android, что упрощает настройку аналитики и краш-репортинга.

Часто задаваемые вопросы

Можно ли изменить Bundle ID после публикации приложения?

Изменить Bundle ID после публикации в App Store или Google Play невозможно. Система воспримет новый идентификатор как совершенно другое приложение. Для обновления существующего продукта Bundle ID должен оставаться неизменным на всём жизненном цикле приложения.

Что произойдёт, если два приложения имеют одинаковый Bundle ID?

Устройство iOS или Android не позволит установить второе приложение с тем же идентификатором поверх первого. Система выдаст ошибку и предложит удалить существующее приложение. В сторах публикация с дублирующимся Bundle ID также заблокируется.

Как правильно выбрать Bundle ID для нового проекта?

Используйте reverse domain notation вашей компании: com.companyname.appname. Избегайте дефисов и специальных символов. Если приложение имеет расширения, добавьте суффиксы через точку. Убедитесь, что идентификатор уникален и не занят другим разработчиком.

Нужен ли отдельный Bundle ID для каждого расширения приложения?

Да, каждое расширение — виджет, Watch App, Notification Service — требует собственного Bundle ID. Идентификаторы образуют иерархию: com.example.app как базовый, com.example.app.widget для виджета, com.example.app.watchkit для Watch. Все они регистрируются отдельно в Apple Developer Portal и используют общий App ID с родительским приложением.

Чем отличается Bundle ID от App ID в портале Apple Developer?

Bundle ID — это строка-идентификатор в коде приложения. App ID — это объект в Apple Developer Portal, который объединяет Bundle ID с набором включённых сервисов (capabilities). App ID создаётся на основе Bundle ID и используется для генерации профилей подписи.

Итоги

  • App Bundle ID — уникальный идентификатор приложения в iOS и Android экосистемах
  • Формат строится на reverse domain notation: com.company.appname
  • Изменение Bundle ID после публикации невозможно без создания нового приложения в сторе
  • Wildcard Bundle ID com.example.* удобен для разработки, но несовместим с Push, CloudKit и In-App Purchase
  • Расширения приложения получают собственные Bundle ID с суффиксами через точку
  • Регистрация выполняется в Apple Developer Portal и Google Play Console соответственно
  • Рекомендация — выбирать идентификатор осмысленно, проверять уникальность до публикации

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также