App Bundle ID — az alkalmazás egyedi azonosítója, amelyet az Apple és Google ökoszisztémákban használnak a szoftvertermék regisztrálásához, aláírásához és terjesztéséhez. Minden alkalmazás a projekt létrehozásakor kapja meg saját Bundle ID-ját, és ez az azonosító változatlan marad a teljes életciklus során. Az Apple Developer Documentation szerint a Bundle ID a szolgáltatások, tanúsítványok és aláírási profilok hozzárendeléséhez használható.
Főbb pontok
Bundle Identifier — egy karaktersorozat, amely egyedileg azonosítja az alkalmazást az operációs rendszerben és az alkalmazásáruházban. iOS és macOS rendszerben Bundle ID-nak, Android rendszerben Package Name-nek hívják, bár funkcionálisan mindkettő ugyanazt a szerepet tölti be: biztosítja az alkalmazás egyediségét az eszközön és az áruházban.
Az operációs rendszer a Bundle ID-t használja az alkalmazások megkülönböztetésére az eszközön. Két azonos azonosítóval rendelkező alkalmazás nem telepíthető egyszerre — a rendszer ugyanazon termékként kezeli őket. Az alkalmazásáruházak is ellenőrzik a Bundle ID egyediségét a közzétételkor.
Az Apple 2008-ban vezette be a Bundle ID-t az iOS SDK megjelenésével. A reverse domain notation formátumot a Java-ból (package naming convention) vették át, ahol az osztálynevek ütközéseinek megakadályozására használják. A Google átvette ezt a gyakorlatot az Androidhoz, ami egységességet biztosított mindkét mobil ökoszisztémában.
| Platform | Mező neve | Példa |
|---|---|---|
| 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 több pontokkal elválasztott szegmensből áll. Az első rész — a fejlesztő vagy vállalat azonosítója (com, org, net). A második — a vállalat domainje (example, google, apple). A következő szegmensek az alkalmazás és a platform nevét pontosítják.
Egy tipikus Bundle ID úgy néz ki, mint com.company.appname. Az Apple a domain név fordított jelölésének használatát javasolja a globális egyediség garantálása érdekében. Ha a vállalatnak nincs domainje, az e-mail használata megengedett: com.example.myapp vagy org.example.myapp.
Az Apple támogatja a Wildcard Bundle ID-t — egy azonosítósablont csillaggal: com.example.*. Az ilyen sablon lehetővé teszi egy App ID használatát egy vállalat több alkalmazásához. A Wildcard ID kényelmes a fejlesztési fázisban, de nem ajánlott éles használatra, mivel korlátozza néhány Apple-szolgáltatás használatát.
A wildcard korlátozásai: A Push-Notifications, CloudKit, In-App Purchase és Game Center pontos (explicit) Bundle ID-t igényel. A com.example.* sablon használatakor ezek a szolgáltatások nem érhetők el. Éles alkalmazásokhoz mindig explicit Bundle ID-t használjon az összes Apple-szolgáltatás teljes funkcionalitásának biztosításához.
A wildcard mellett az Apple támogatja az előtag-azonosítókat, amelyeket a fejlesztői csapatok kapnak az Apple Developer Programban történő regisztrációkor. Az előtag (Team ID) automatikusan hozzáadódik az összes App ID-hoz és aláírási profilhoz. Két különböző Team ID létrehozhatja ugyanazt a Bundle ID-t, de az eszközön különböző alkalmazásoknak tekintendők.
Bundle ID regisztrálása — kötelező lépés az alkalmazás közzététele előtt. Az Apple ökoszisztémában a regisztráció az Apple Developer Portalban történik a Certificates, Identifiers & Profiles szekción keresztül. A Google Play-ben a Bundle ID-t az alkalmazás létrehozásakor kell megadni a fejlesztői konzolban.
Az Apple Developer portálon válassza ki az Identifiers szekciót, kattintson a Register gombra és adja meg az App ID típusát. Írja be a Bundle ID pontos nevét és válassza ki a szükséges capabilities-eket: Push Notifications, CloudKit, Sign in with Apple. A regisztráció után az azonosító elérhetővé válik aláírási profilok létrehozásához.
// Bundle ID ellenőrzése az alkalmazás kódjában
let bundleID = Bundle.main.bundleIdentifier
print("Aktuális Bundle ID: \(bundleID ?? "unknown")")
// Bundle ID ellenőrzése fordítási feltételekhez
if bundleID == "com.example.app.production" {
// Éles konfiguráció
Analytics.shared.configure(.production)
}
Google Play Console nem igényli a Bundle ID előzetes regisztrálását. Az azonosítót az alkalmazás modul build.gradle fájljában kell megadni, és egyedinek kell lennie az egész Google Play keretein belül. Az alkalmazás létrehozása után a Package Name módosítása lehetetlen, ezért válassza meg az azonosítót gondosan és ellenőrizze egyediségét kereséssel a Google Play-ben. A Google nem szabadítja fel a törölt alkalmazások azonosítóit, így egy egyszer lefoglalt Bundle ID elérhetetlen marad más fejlesztők számára.
Az App Store Connect-ben történő regisztrációkor meg kell adni egy Bundle ID-t a meglévő regisztrált azonosítók készletéből. Ha az azonosító még nincs regisztrálva az Apple Developer portálon, a rendszer automatikus létrehozást javasol. A regisztráció után a Bundle ID a csapathoz kötődik, és nem vihető át más fejlesztői fiókba az Apple támogatásának megkeresése nélkül. Minden Bundle ID rendelkezhet több aláírási profillal különböző környezetekhez: Development, Ad Hoc, App Store.
A Bundle ID regisztrálásakor bővítményekkel rendelkező iOS alkalmazás esetén minden összetevőt külön kell regisztrálni. A widgetek, billentyűzetek, Notification Service és Watch App bővítményei saját, a fő azonosítóból származtatott azonosítóval rendelkeznek. Az App Store Connect az App Record létrehozásakor egy csoportba egyesíti őket, ami lehetővé teszi az összes összetevő egyetlen alkalmazásként történő közzétételét.
Bundle ID beállítása az Xcode-ban több helyen történik: Info.plist, Build Settings és Signing & Capabilities. A központi mező — a Bundle Identifier az alkalmazás targetjében. Az összes Apple-szolgáltatás, a Push-Notifications-tól a CloudKit-ig, ehhez az azonosítóhoz kapcsolódik. A helytelenül megadott Bundle ID aláírási hibákhoz és az App Store-ban történő közzététel lehetetlenségéhez vezet.
<!-- Info.plist — a projekt alap Bundle ID-ja -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — PRODUCT_BUNDLE_IDENTIFIER változó -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Az Xcode a PRODUCT_BUNDLE_IDENTIFIER változót használja a Build Settings-ben. Különböző fordítási konfigurációkhoz különböző értékek állíthatók be: com.example.app.dev a Debug és com.example.app a Release számára. Ez kényelmes a fejlesztési verzió éles verzió melletti párhuzamos telepítéséhez ugyanazon az eszközön tesztelési célokra.
Ha az alkalmazás bővítményekkel rendelkezik (Notification Service, Widget, Watch App), minden bővítmény megkapja a saját Bundle ID-ját utótaggal. Főalkalmazás: com.example.app. Widget bővítmény: com.example.app.widget. Watch App: com.example.app.watchkit. Minden azonosító külön regisztrálásra kerül az Apple Developer Portalban és külön aláírási profilt kap. Az Xcode automatikusan kezeli ezeket a függőségeket a fordítás során.
App Bundle ID (Apple) és Package Name (Google) — analóg entitások azonos céllal, de eltérő használati szabályokkal az iOS és Android ökoszisztémákban. Mindkét azonosító reverse domain notation-t használ, és nem módosítható a hivatalos alkalmazásáruházakban történő közzététel után.
Az Apple ökoszisztémában a Bundle ID az aláírási profilhoz és tanúsítványokhoz kapcsolódik. A fejlesztői csapat váltásakor a Bundle ID átvihető a fiókok között az App Store Connect-en keresztül. Androidban a Package Name szorosan az alkalmazáshoz kötődik a Google Play-ben, és nem vihető át fejlesztői fiókok között.
| Jellemző | iOS Bundle ID | Android Package Name |
|---|---|---|
| Maximális hossz | Nincs korlátozva | 150 karakter |
| Szegmens elválasztó | Pont (.) | Pont (.) |
| Engedélyezett karakterek | A-Z, a-z, 0-9, pont, kötőjel | A-Z, a-z, 0-9, pont, aláhúzás |
| Wildcard | Támogatott (*) | Nem támogatott |
| Használat kódban | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
A különbségek ellenére mindkét azonosító kritikus szerepet játszik: nélkülük lehetetlen az alkalmazás közzététele a hivatalos áruházban. Javaslat többplatformos projektekhez — használja ugyanazt az azonosítót az iOS és Android verziókban a Firebase, Analytics és más szolgáltatások integrációjának egyszerűsítéséhez. Ez megkönnyíti a navigációt a fejlesztői csapat számára is: egyetlen azonosító mindkét projekthez csökkenti a zavart a CI/CD konfigurálása és a környezetek beállítása során.
A Flutter vagy React Native használatával történő fejlesztés során az egységes azonosító különösen fontos, mert a kódbázis közös, és sok automatikus fordítóeszöz ugyanazt a csomagnevet várja mindkét platformhoz. A Firebase-projekt is egyetlen azonosítóhoz kapcsolódik iOS és Android esetén, ami egyszerűsíti az analitika és hibajelentés konfigurálását.
Gyakran ismételt kérdések
Bundle ID módosítása az App Store-ban vagy Google Play-ben történő közzététel után lehetetlen. A rendszer az új azonosítót teljesen más alkalmazásként érzékeli. A meglévő termék frissítéséhez a Bundle ID-nak változatlanul kell maradnia az alkalmazás teljes életciklusa során.
Az iOS vagy Android eszköz nem engedi a második alkalmazás telepítését ugyanazzal az azonosítóval az első fölé. A rendszer hibát jelez és javasolja a meglévő alkalmazás eltávolítását. Az áruházakban a duplikált Bundle ID-val történő közzététel szintén blokkolva lesz.
Használja vállalata reverse domain notation-ját: com.cegnév.alkalmazásnév. Kerülje a kötőjeleket és speciális karaktereket. Ha az alkalmazás bővítményekkel rendelkezik, adjon hozzá utótagokat ponton keresztül. Győződjön meg arról, hogy az azonosító egyedi és nem foglalta le más fejlesztő.
Igen, minden bővítmény — widget, Watch App, Notification Service — saját Bundle ID-t igényel. Az azonosítók hierarchiát alkotnak: com.example.app alapként, com.example.app.widget a widgethez, com.example.app.watchkit a Watch-hoz. Mindegyik külön regisztrálásra kerül az Apple Developer Portalban és közös App ID-t használ a szülő alkalmazással.
Bundle ID — az azonosító karaktersorozat az alkalmazás kódjában. App ID — egy objektum az Apple Developer Portalban, amely a Bundle ID-t a bekapcsolt szolgáltatások (capabilities) halmazával egyesíti. Az App ID a Bundle ID alapján jön létre, és aláírási profilok generálására használják.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is