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 препоръчва използване на обратен запис на името на домейна, за да се гарантира глобална уникалност. Ако компанията няма домейн, се позволява използване на имейл: 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("Текущ 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 в target-а на приложението. Всички услуги на 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. Това е удобно за паралелно инсталиране на версията за разработка до продукционната версия на едно и също устройство за тестване.

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

Ако приложението има разширения (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.имеакомпанията.имеаприложението. Избягвайте тирета и специални знаци. Ако приложението има разширения, добавете наставки чрез точка. Уверете се, че идентификаторът е уникален и не е зает от друг разработчик.

Нужен ли е отделен 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, който комбинира 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също