App Bundle ID — що це, ідентифікатор застосунку та реєстрація

Автор: IT Sectr Опубліковано: 2026-04-17 Час читання: 8 хв

App Bundle ID — це унікальний ідентифікатор застосунку, що використовується в екосистемах Apple і Google для реєстрації, підпису та розповсюдження програмного продукту. Кожен застосунок отримує свій Bundle ID під час створення проекту, і цей ідентифікатор залишається незмінним протягом усього життєвого циклу. Згідно з Документацією розробника Apple, 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

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