App Bundle ID — este un identificator unic al aplicației utilizat în ecosistemele Apple și Google pentru înregistrarea, semnarea și distribuirea produsului software. Fiecare aplicație primește propriul Bundle ID la crearea proiectului, iar acest identificator rămâne neschimbat pe tot parcursul ciclului de viață. Conform Apple Developer Documentation, Bundle ID este utilizat pentru legarea serviciilor, certificatelor și profilelor de semnare.
Principalele puncte
Bundle Identifier — este un șir care identifică în mod unic aplicația în sistemul de operare și în magazinul de aplicații. În iOS și macOS se numește Bundle ID, în Android — Package Name, deși funcțional ambele îndeplinesc același rol: asigură unicitatea aplicației pe dispozitiv și în magazin.
Sistemul de operare utilizează Bundle ID pentru a diferenția aplicațiile pe dispozitiv. Două aplicații cu același identificator nu pot fi instalate simultan — sistemul le percepe ca același produs. Magazinele de aplicații verifică, de asemenea, unicitatea Bundle ID la publicare.
Apple a introdus Bundle ID odată cu lansarea iOS SDK în 2008. Formatul reverse domain notation a fost preluat din Java (package naming convention), unde este utilizat pentru prevenirea conflictelor de nume de clase. Google a preluat această practică pentru Android, asigurând uniformitatea în ambele ecosisteme mobile.
| Platformă | Numele câmpului | Exemplu |
|---|---|---|
| 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 |
Bundle ID constă din mai multe segmente separate prin puncte. Prima parte — identificatorul dezvoltatorului sau companiei (com, org, net). A doua — domeniul companiei (example, google, apple). Segmentele următoare precizează numele aplicației și platformei.
Un Bundle ID tipic arată ca com.company.appname. Apple recomandă utilizarea notației inverse a numelui de domeniu pentru a garanta unicitatea globală. Dacă compania nu are domeniu, se permite utilizarea emailului: com.example.myapp sau org.example.myapp.
Apple acceptă Wildcard Bundle ID — un șablon de identificator cu asterisc: com.example.*. Un astfel de șablon permite utilizarea unui singur App ID pentru mai multe aplicații ale unei companii. Wildcard ID este convenabil în faza de dezvoltare, dar nu este recomandat pentru producție, deoarece limitează utilizarea unor servicii Apple.
Limitările wildcard: Push-Notifications, CloudKit, In-App Purchase și Game Center necesită un Bundle ID explicit (explicit). La utilizarea șablonului com.example.*, aceste servicii nu sunt disponibile. Pentru aplicațiile de producție, utilizați întotdeauna explicit Bundle ID pentru a asigura funcționalitatea completă a tuturor serviciilor Apple.
Pe lângă wildcard, Apple acceptă identificatori cu prefix, care sunt atribuiți echipelor de dezvoltare la înregistrarea în Apple Developer Program. Prefixul (Team ID) se adaugă automat la toate App ID-urile și profilele de semnare. Două Team ID-uri diferite pot crea același Bundle ID, dar pe dispozitiv ele sunt considerate aplicații diferite.
Înregistrarea Bundle ID — o etapă obligatorie înainte de publicarea aplicației. În ecosistemul Apple, înregistrarea se efectuează în Apple Developer Portal prin secțiunea Certificates, Identifiers & Profiles. În Google Play, Bundle ID se specifică la crearea aplicației în consola dezvoltatorului.
Pe portalul Apple Developer, selectați secțiunea Identifiers, apăsați butonul Register și specificați tipul App ID. Introduceți numele exact al Bundle ID și selectați capabilities-urile necesare: Push Notifications, CloudKit, Sign in with Apple. După înregistrare, identificatorul devine disponibil pentru crearea profilelor de semnare.
// Verificarea Bundle ID în codul aplicației
let bundleID = Bundle.main.bundleIdentifier
print("Bundle ID curent: \(bundleID ?? "unknown")")
// Verificarea Bundle ID pentru condiții de compilare
if bundleID == "com.example.app.production" {
// Configurație de producție
Analytics.shared.configure(.production)
}
Google Play Console nu necesită înregistrarea prealabilă a Bundle ID. Identificatorul se specifică în fișierul build.gradle al modulului aplicației și trebuie să fie unic în întregul Google Play. După crearea aplicației, modificarea Package Name este imposibilă, așa că alegeți identificatorul cu atenție și verificați unicitatea acestuia prin căutare în Google Play. Google nu eliberează identificatoarele aplicațiilor șterse, astfel că un Bundle ID ocupat odată rămâne indisponibil pentru alți dezvoltatori.
La înregistrarea în App Store Connect, trebuie specificat un Bundle ID din setul existent de identificatori înregistrați. Dacă identificatorul nu este încă înregistrat pe portalul Apple Developer, sistemul va propune crearea sa automată. După înregistrare, Bundle ID este legat de echipă și nu poate fi transferat pe un alt cont de dezvoltator fără a contacta suportul Apple. Fiecare Bundle ID poate avea mai multe profile de semnare pentru medii diferite: Development, Ad Hoc, App Store.
La înregistrarea Bundle ID pentru o aplicație iOS cu extensii, fiecare componentă trebuie înregistrată separat. Extensiile de widget-uri, tastatură, Notification Service și Watch App au propriii identificatori derivați din cel principal. App Store Connect le combină într-un grup la crearea App Record, permițând publicarea tuturor componentelor ca o singură aplicație.
Configurarea Bundle ID în Xcode se realizează în mai multe locuri: Info.plist, Build Settings și Signing & Capabilities. Câmpul central — Bundle Identifier în target-ul aplicației. Toate serviciile Apple, de la Push-Notifications până la CloudKit, sunt legate de acest identificator. Un Bundle ID incorect duce la erori de semnare și imposibilitatea publicării în App Store.
<!-- Info.plist — Bundle ID de bază al proiectului -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — variabila PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode utilizează variabila PRODUCT_BUNDLE_IDENTIFIER în Build Settings. Pentru diferite configurații de compilare se pot stabili valori diferite: com.example.app.dev pentru Debug și com.example.app pentru Release. Acest lucru este convenabil pentru instalarea paralelă a versiunii de dezvoltare lângă cea de producție pe același dispozitiv pentru testare.
Dacă aplicația are extensii (Notification Service, Widget, Watch App), fiecare extensie primește propriul Bundle ID cu sufix. Aplicația principală: com.example.app. Extensia widget: com.example.app.widget. Watch App: com.example.app.watchkit. Fiecare identificator se înregistrează separat în Apple Developer Portal și primește un profil de semnare separat. Xcode gestionează automat aceste dependențe la compilare.
App Bundle ID (Apple) și Package Name (Google) — sunt entități analogice cu același scop, dar cu reguli de utilizare diferite în ecosistemele iOS și Android. Ambele identificatoare utilizează reverse domain notation și nu pot fi modificate după publicarea în magazinele oficiale de aplicații.
În ecosistemul Apple, Bundle ID este legat de profilul de semnare și certificate. La schimbarea echipei de dezvoltare, Bundle ID poate fi transferat între conturi prin App Store Connect. În Android, Package Name este strict legat de aplicație în Google Play și nu poate fi transferat între conturi de dezvoltator.
| Caracteristică | iOS Bundle ID | Android Package Name |
|---|---|---|
| Lungimea maximă | Nelimitată | 150 de caractere |
| Separator de segmente | Punct (.) | Punct (.) |
| Caractere permise | A-Z, a-z, 0-9, punct, cratimă | A-Z, a-z, 0-9, punct, underscore |
| Wildcard | Acceptat (*) | Neacceptat |
| Utilizare în cod | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
În ciuda diferențelor, ambele identificatoare joacă un rol critic: fără ele, publicarea aplicației în magazinul oficial este imposibilă. Recomandarea pentru proiecte cross-platform — utilizați același identificator în versiunile iOS și Android pentru a simplifica integrarea cu Firebase, Analytics și alte servicii. Acest lucru facilitează, de asemenea, navigarea pentru echipa de dezvoltare: un singur identificator pentru ambele proiecte reduce confuzia la configurarea CI/CD și a mediilor.
La dezvoltarea cu Flutter sau React Native, un identificator unitar este deosebit de important, deoarece baza de cod este comună, iar multe instrumente de compilare automată așteaptă același nume de pachet pentru ambele platforme. Proiectul Firebase se leagă, de asemenea, de un singur identificator pentru iOS și Android, ceea ce simplifică configurarea analiticii și raportarea erorilor.
Întrebări frecvente
Modificarea Bundle ID după publicarea în App Store sau Google Play este imposibilă. Sistemul va percepe noul identificator ca o aplicație complet diferită. Pentru actualizarea produsului existent, Bundle ID trebuie să rămână neschimbat pe tot parcursul ciclului de viață al aplicației.
Dispozitivul iOS sau Android nu va permite instalarea celei de-a doua aplicații cu același identificator peste prima. Sistemul va afișa o eroare și va propune ștergerea aplicației existente. În magazine, publicarea cu un Bundle ID duplicat va fi, de asemenea, blocată.
Utilizați reverse domain notation a companiei dumneavoastră: com.numecompanie.numeaplicație. Evitați cratimele și caracterele speciale. Dacă aplicația are extensii, adăugați sufixe prin punct. Asigurați-vă că identificatorul este unic și nu este ocupat de un alt dezvoltator.
Da, fiecare extensie — widget, Watch App, Notification Service — necesită propriul Bundle ID. Identificatoarele formează o ierarhie: com.example.app ca bază, com.example.app.widget pentru widget, com.example.app.watchkit pentru Watch. Toate se înregistrează separat în Apple Developer Portal și utilizează un App ID comun cu aplicația părinte.
Bundle ID — este șirul identificator în codul aplicației. App ID — este un obiect în Apple Developer Portal care combină Bundle ID cu un set de servicii incluse (capabilities). App ID se creează pe baza Bundle ID și se utilizează pentru generarea profilelor de semnare.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și