App Bundle ID — is een unieke identificatie van de applicatie die wordt gebruikt in de Apple- en Google-ecosystemen voor registratie, ondertekening en distributie van het softwareproduct. Elke applicatie krijgt zijn eigen Bundle ID bij het aanmaken van het project en deze identificatie blijft ongewijzigd gedurende de hele levenscyclus. Volgens Apple Developer Documentation wordt Bundle ID gebruikt voor het koppelen van services, certificaten en ondertekeningsprofielen.
Belangrijkste punten
Bundle Identifier — is een tekenreeks die de applicatie uniek identificeert in het besturingssysteem en de app store. In iOS en macOS heet het Bundle ID, in Android — Package Name, hoewel functioneel beide dezelfde rol vervullen: ze zorgen voor de uniciteit van de applicatie op het apparaat en in de winkel.
Het besturingssysteem gebruikt Bundle ID om applicaties op het apparaat te onderscheiden. Twee applicaties met dezelfde identificatie kunnen niet tegelijkertijd worden geïnstalleerd — het systeem beschouwt ze als hetzelfde product. App stores controleren ook de uniciteit van Bundle ID bij publicatie.
Apple introduceerde Bundle ID met de release van iOS SDK in 2008. Het reverse domain notation-formaat werd overgenomen van Java (package naming convention), waar het wordt gebruikt om conflicten tussen klassennamen te voorkomen. Google nam deze praktijk over voor Android, wat uniformiteit in beide mobiele ecosystemen garandeerde.
| Platform | Veldnaam | Voorbeeld |
|---|---|---|
| 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 bestaat uit meerdere segmenten gescheiden door punten. Het eerste deel — de identificatie van de ontwikkelaar of het bedrijf (com, org, net). Het tweede — het domein van het bedrijf (example, google, apple). Volgende segmenten specificeren de naam van de applicatie en het platform.
Een typisch Bundle ID ziet eruit als com.company.appname. Apple raadt aan om de omgekeerde notatie van de domeinnaam te gebruiken om wereldwijde uniciteit te garanderen. Als het bedrijf geen domein heeft, is het gebruik van e-mail toegestaan: com.example.myapp of org.example.myapp.
Apple ondersteunt Wildcard Bundle ID — een identificatiesjabloon met een asterisk: com.example.*. Zo'n sjabloon maakt het mogelijk om één App ID te gebruiken voor meerdere applicaties van één bedrijf. Wildcard ID is handig in de ontwikkelfase, maar wordt niet aanbevolen voor productie omdat het het gebruik van sommige Apple-services beperkt.
Beperkingen van wildcard: Push-meldingen, CloudKit, In-App Purchase en Game Center vereisen een expliciet (explicit) Bundle ID. Bij gebruik van het sjabloon com.example.* zijn deze services niet beschikbaar. Gebruik voor productie-applicaties altijd explicit Bundle ID om de volledige functionaliteit van alle Apple-services te garanderen.
Naast wildcard ondersteunt Apple prefix-identificaties die worden toegewezen aan ontwikkelingsteams bij registratie in het Apple Developer Program. Het prefix (Team ID) wordt automatisch toegevoegd aan alle App ID's en ondertekeningsprofielen. Twee verschillende Team ID's kunnen hetzelfde Bundle ID aanmaken, maar op het apparaat worden ze als verschillende applicaties beschouwd.
Bundle ID registreren — een verplichte stap vóór het publiceren van de applicatie. In het Apple-ecosysteem gebeurt de registratie in de Apple Developer Portal via de sectie Certificates, Identifiers & Profiles. In Google Play wordt Bundle ID opgegeven bij het aanmaken van de app in de ontwikkelaarsconsole.
Selecteer op de Apple Developer-portal de sectie Identifiers, klik op de knop Register en specificeer het type App ID. Voer de exacte naam van Bundle ID in en selecteer de benodigde capabilities: Push Notifications, CloudKit, Sign in with Apple. Na registratie wordt de identificatie beschikbaar voor het aanmaken van ondertekeningsprofielen.
// Bundle ID controleren in applicatiecode
let bundleID = Bundle.main.bundleIdentifier
print("Huidige Bundle ID: \(bundleID ?? "unknown")")
// Bundle ID controleren voor compilatiecondities
if bundleID == "com.example.app.production" {
// Productieconfiguratie
Analytics.shared.configure(.production)
}
Google Play Console vereist geen voorafgaande registratie van Bundle ID. De identificatie wordt opgegeven in het build.gradle-bestand van de applicatiemodule en moet uniek zijn binnen de hele Google Play. Na het aanmaken van de app is wijziging van Package Name onmogelijk, dus kies de identificatie zorgvuldig en controleer de uniciteit ervan via zoeken in Google Play. Google geeft identificaties van verwijderde apps niet vrij, dus een eenmaal ingenomen Bundle ID blijft ontoegankelijk voor andere ontwikkelaars.
Bij registratie in App Store Connect moet een Bundle ID worden opgegeven uit de bestaande set geregistreerde identificaties. Als de identificatie nog niet is geregistreerd op de Apple Developer-portal, zal het systeem voorstellen deze automatisch aan te maken. Na registratie wordt Bundle ID aan het team gekoppeld en kan het niet worden overgedragen naar een ander ontwikkelaarsaccount zonder contact op te nemen met Apple-ondersteuning. Elk Bundle ID kan meerdere ondertekeningsprofielen hebben voor verschillende omgevingen: Development, Ad Hoc, App Store.
Bij registratie van Bundle ID voor een iOS-app met extensies moet elk onderdeel afzonderlijk worden geregistreerd. Extensies van widgets, toetsenborden, Notification Service en Watch App hebben eigen identificaties die zijn afgeleid van de hoofdidentificatie. App Store Connect voegt ze samen in een groep bij het aanmaken van een App Record, waardoor alle componenten als één applicatie kunnen worden gepubliceerd.
Bundle ID configureren in Xcode gebeurt op meerdere plaatsen: Info.plist, Build Settings en Signing & Capabilities. Het centrale veld — Bundle Identifier in het target van de applicatie. Alle Apple-services, van Push-meldingen tot CloudKit, worden aan deze identificatie gekoppeld. Een onjuist opgegeven Bundle ID leidt tot ondertekeningsfouten en onmogelijkheid om te publiceren in de App Store.
<!-- Info.plist — basis Bundle ID van het project -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — variabele PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode gebruikt de variabele PRODUCT_BUNDLE_IDENTIFIER in Build Settings. Voor verschillende compilatieconfiguraties kunnen verschillende waarden worden ingesteld: com.example.app.dev voor Debug en com.example.app voor Release. Dit is handig voor parallelle installatie van de ontwikkelversie naast de productieversie op hetzelfde apparaat voor testdoeleinden.
Als de app extensies heeft (Notification Service, Widget, Watch App), krijgt elke extensie zijn eigen Bundle ID met een suffix. Hoofdapplicatie: com.example.app. Widget-extensie: com.example.app.widget. Watch App: com.example.app.watchkit. Elke identificatie wordt apart geregistreerd in de Apple Developer Portal en krijgt een apart ondertekeningsprofiel. Xcode beheert deze afhankelijkheden automatisch tijdens het compileren.
App Bundle ID (Apple) en Package Name (Google) — zijn analoge entiteiten met hetzelfde doel, maar met verschillende gebruiksregels in iOS- en Android-ecosystemen. Beide identificaties gebruiken reverse domain notation en kunnen niet worden gewijzigd na publicatie in officiële app stores.
In het Apple-ecosysteem is Bundle ID gekoppeld aan het ondertekeningsprofiel en certificaten. Bij verandering van ontwikkelingsteam kan Bundle ID tussen accounts worden overgedragen via App Store Connect. In Android is Package Name strak gebonden aan de app in Google Play en kan niet worden overgedragen tussen ontwikkelaarsaccounts.
| Kenmerk | iOS Bundle ID | Android Package Name |
|---|---|---|
| Maximale lengte | Ongelimiteerd | 150 tekens |
| Segment scheidingsteken | Punt (.) | Punt (.) |
| Toegestane tekens | A-Z, a-z, 0-9, punt, koppelteken | A-Z, a-z, 0-9, punt, underscore |
| Wildcard | Ondersteund (*) | Niet ondersteund |
| Gebruik in code | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
Ondanks de verschillen spelen beide identificaties een cruciale rol: zonder hen is het onmogelijk om een app te publiceren in de officiële winkel. Aanbeveling voor cross-platformprojecten — gebruik dezelfde identificatie in iOS- en Android-versies om integratie met Firebase, Analytics en andere services te vereenvoudigen. Dit vergemakkelijkt ook de navigatie voor het ontwikkelingsteam: één identificatie voor beide projecten vermindert verwarring bij het configureren van CI/CD en omgevingen.
Bij ontwikkeling met Flutter of React Native is een uniforme identificatie vooral belangrijk omdat de codebasis gedeeld is en veel automatische compilatiegereedschappen dezelfde pakketnaam voor beide platformen verwachten. Het Firebase-project wordt ook aan één identificatie voor iOS en Android gekoppeld, wat de configuratie van analytics en crashrapportage vereenvoudigt.
Veelgestelde vragen
Bundle ID wijzigen na publicatie in App Store of Google Play is onmogelijk. Het systeem zal de nieuwe identificatie als een volledig andere app beschouwen. Voor het bijwerken van een bestaand product moet Bundle ID ongewijzigd blijven gedurende de hele levenscyclus van de applicatie.
Het iOS- of Android-apparaat staat niet toe dat een tweede app met dezelfde identificatie over de eerste wordt geïnstalleerd. Het systeem geeft een foutmelding en stelt voor de bestaande app te verwijderen. In de winkels wordt publicatie met een dubbele Bundle ID ook geblokkeerd.
Gebruik de reverse domain notation van uw bedrijf: com.bedrijfsnaam.appnaam. Vermijd koppeltekens en speciale tekens. Als de app extensies heeft, voeg dan suffixes toe via een punt. Zorg ervoor dat de identificatie uniek is en niet door een andere ontwikkelaar is ingenomen.
Ja, elke extensie — widget, Watch App, Notification Service — vereist een eigen Bundle ID. De identificaties vormen een hiërarchie: com.example.app als basis, com.example.app.widget voor de widget, com.example.app.watchkit voor Watch. Ze worden allemaal apart geregistreerd in de Apple Developer Portal en gebruiken een gemeenschappelijke App ID met de bovenliggende app.
Bundle ID — is de identificatietekenreeks in de app-code. App ID — is een object in de Apple Developer Portal dat Bundle ID combineert met een set ingeschakelde services (capabilities). App ID wordt gemaakt op basis van Bundle ID en wordt gebruikt voor het genereren van ondertekeningsprofielen.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook