App Bundle ID — är en unik identifierare för applikationen som används i Apples och Googles ekosystem för registrering, signering och distribution av mjukvaruprodukten. Varje applikation får sitt eget Bundle ID när projektet skapas, och denna identifierare förblir oförändrad under hela livscykeln. Enligt Apple Developer Documentation används Bundle ID för att koppla tjänster, certifikat och signeringsprofiler.
Huvudpunkter
Bundle Identifier — är en sträng som unikt identifierar applikationen i operativsystemet och appbutiken. I iOS och macOS kallas det Bundle ID, i Android — Package Name, även om funktionellt båda fyller samma roll: de säkerställer applikationens unikhet på enheten och i butiken.
Operativsystemet använder Bundle ID för att särskilja applikationer på enheten. Två applikationer med samma identifierare kan inte installeras samtidigt — systemet uppfattar dem som samma produkt. Appbutiker kontrollerar också unikheten hos Bundle ID vid publicering.
Apple introducerade Bundle ID med lanseringen av iOS SDK 2008. Formatet reverse domain notation lånades från Java (package naming convention), där det används för att förhindra konflikter mellan klassnamn. Google antog denna praxis för Android, vilket säkerställde enhetlighet i båda mobila ekosystemen.
| Plattform | Fältnamn | Exempel |
|---|---|---|
| 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 består av flera segment separerade med punkter. Den första delen — identifieraren för utvecklaren eller företaget (com, org, net). Den andra — företagets domän (example, google, apple). Följande segment specificerar applikationens och plattformens namn.
Ett typiskt Bundle ID ser ut som com.company.appname. Apple rekommenderar att använda omvänd notation av domännamnet för att garantera global unikhet. Om företaget inte har någon domän är det tillåtet att använda e-post: com.example.myapp eller org.example.myapp.
Apple stöder Wildcard Bundle ID — en identifierarmall med asterisk: com.example.*. En sådan mall gör det möjligt att använda ett App ID för flera applikationer inom ett företag. Wildcard ID är bekvämt i utvecklingsfasen men rekommenderas inte för produktion eftersom det begränsar användningen av vissa Apple-tjänster.
Begränsningar för wildcard: Push Notifications, CloudKit, In-App Purchase och Game Center kräver ett explicit Bundle ID. Vid användning av mallen com.example.* är dessa tjänster inte tillgängliga. För produktionsapplikationer, använd alltid explicit Bundle ID för att säkerställa full funktionalitet för alla Apple-tjänster.
Förutom wildcard stöder Apple prefix-identifierare som tilldelas utvecklingsteam vid registrering i Apple Developer Program. Prefixet (Team ID) läggs automatiskt till alla App ID och signeringsprofiler. Två olika Team ID kan skapa samma Bundle ID, men på enheten betraktas de som olika applikationer.
Registrering av Bundle ID — ett obligatoriskt steg före publicering av applikationen. I Apples ekosystem görs registreringen i Apple Developer Portal via avsnittet Certificates, Identifiers & Profiles. I Google Play anges Bundle ID när applikationen skapas i utvecklarkonsolen.
På Apple Developer-portalen väljer du avsnittet Identifiers, klickar på Register-knappen och anger typen App ID. Ange det exakta namnet på Bundle ID och välj nödvändiga capabilities: Push Notifications, CloudKit, Sign in with Apple. Efter registrering blir identifieraren tillgänglig för att skapa signeringsprofiler.
// Kontrollera Bundle ID i applikationskoden
let bundleID = Bundle.main.bundleIdentifier
print("Aktuellt Bundle ID: \(bundleID ?? "unknown")")
// Kontrollera Bundle ID för kompileringsvillkor
if bundleID == "com.example.app.production" {
// Produktionskonfiguration
Analytics.shared.configure(.production)
}
Google Play Console kräver ingen förhandsregistrering av Bundle ID. Identifieraren anges i applikationsmodulens build.gradle-fil och måste vara unik inom hela Google Play. Efter att applikationen har skapats är ändring av Package Name omöjlig, så välj identifieraren noggrant och kontrollera dess unikhet genom sökning i Google Play. Google frigör inte identifierare för borttagna applikationer, så ett en gång upptaget Bundle ID förblir otillgängligt för andra utvecklare.
Vid registrering i App Store Connect måste ett Bundle ID anges från den befintliga uppsättningen registrerade identifierare. Om identifieraren ännu inte är registrerad på Apple Developer-portalen kommer systemet att föreslå att skapa den automatiskt. Efter registrering binds Bundle ID till teamet och kan inte överföras till ett annat utvecklarkonto utan att kontakta Apple Support. Varje Bundle ID kan ha flera signeringsprofiler för olika miljöer: Development, Ad Hoc, App Store.
Vid registrering av Bundle ID för en iOS-applikation med tillägg måste varje komponent registreras separat. Tillägg för widgetar, tangentbord, Notification Service och Watch App har egna identifierare som härleds från huvudidentifieraren. App Store Connect kombinerar dem i en grupp när en App Record skapas, vilket gör det möjligt att publicera alla komponenter som en enda applikation.
Konfigurering av Bundle ID i Xcode görs på flera ställen: Info.plist, Build Settings och Signing & Capabilities. Det centrala fältet — Bundle Identifier i applikationens target. Alla Apple-tjänster, från Push Notifications till CloudKit, kopplas till denna identifierare. Ett felaktigt angivet Bundle ID leder till signeringsfel och omöjlighet att publicera i App Store.
<!-- Info.plist — projektets grundläggande Bundle ID -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — variabeln PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode använder variabeln PRODUCT_BUNDLE_IDENTIFIER i Build Settings. För olika kompileringskonfigurationer kan olika värden ställas in: com.example.app.dev för Debug och com.example.app för Release. Detta är bekvämt för parallell installation av utvecklingsversionen bredvid produktionsversionen på samma enhet för testning.
Om applikationen har tillägg (Notification Service, Widget, Watch App) får varje tillägg sitt eget Bundle ID med suffix. Huvudapplikation: com.example.app. Widgettillägg: com.example.app.widget. Watch App: com.example.app.watchkit. Varje identifierare registreras separat i Apple Developer Portal och får en separat signeringsprofil. Xcode hanterar automatiskt dessa beroenden vid kompilering.
App Bundle ID (Apple) och Package Name (Google) — är analoga enheter med samma syfte men med olika användningsregler i iOS- och Android-ekosystemen. Båda identifierarna använder reverse domain notation och kan inte ändras efter publicering i officiella appbutiker.
I Apples ekosystem är Bundle ID kopplat till signeringsprofilen och certifikat. Vid byte av utvecklingsteam kan Bundle ID överföras mellan konton via App Store Connect. I Android är Package Name hårt bundet till applikationen i Google Play och kan inte överföras mellan utvecklarkonton.
| Egenskap | iOS Bundle ID | Android Package Name |
|---|---|---|
| Maximal längd | Obegränsad | 150 tecken |
| Segmentavskiljare | Punkt (.) | Punkt (.) |
| Tillåtna tecken | A-Z, a-z, 0-9, punkt, bindestreck | A-Z, a-z, 0-9, punkt, understreck |
| Wildcard | Stöds (*) | Stöds inte |
| Användning i kod | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
Trots skillnaderna spelar båda identifierarna en kritisk roll: utan dem är det omöjligt att publicera applikationen i den officiella butiken. Rekommendation för plattformsoberoende projekt — använd samma identifierare i iOS- och Android-versioner för att förenkla integration med Firebase, Analytics och andra tjänster. Detta underlättar också navigeringen för utvecklingsteamet: en identifierare för båda projekten minskar förvirring vid konfigurering av CI/CD och miljöer.
Vid utveckling med Flutter eller React Native är en enhetlig identifierare särskilt viktig eftersom kodbasen är delad och många automatiska kompileringsverktyg förväntar sig samma paketnamn för båda plattformarna. Firebase-projektet kopplas också till en identifierare för iOS och Android, vilket förenklar konfigureringen av analys och felrapportering.
Vanliga frågor
Ändring av Bundle ID efter publicering i App Store eller Google Play är omöjlig. Systemet kommer att uppfatta den nya identifieraren som en helt annan applikation. För uppdatering av en befintlig produkt måste Bundle ID förbli oförändrat under hela applikationens livscykel.
iOS- eller Android-enheten tillåter inte installation av den andra applikationen med samma identifierare ovanpå den första. Systemet visar ett fel och föreslår att den befintliga applikationen tas bort. I butikerna kommer publicering med ett duplicerat Bundle ID också att blockeras.
Använd reverse domain notation för ditt företag: com.företagsnamn.applikationsnamn. Undvik bindestreck och specialtecken. Om applikationen har tillägg, lägg till suffix via punkt. Se till att identifieraren är unik och inte är upptagen av en annan utvecklare.
Ja, varje tillägg — widget, Watch App, Notification Service — kräver sitt eget Bundle ID. Identifierarna bildar en hierarki: com.example.app som bas, com.example.app.widget för widgeten, com.example.app.watchkit för Watch. Alla registreras separat i Apple Developer Portal och använder ett gemensamt App ID med den överordnade applikationen.
Bundle ID — är identifierarsträngen i applikationens kod. App ID — är ett objekt i Apple Developer Portal som kombinerar Bundle ID med en uppsättning aktiverade tjänster (capabilities). App ID skapas baserat på Bundle ID och används för att generera signeringsprofiler.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också