App Bundle ID — nedir, uygulama tanımlayıcısı ve kayıt

Yazar: IT Sectr Yayınlanma: 2026-04-17 Okuma süresi: 8 dk

App Bundle ID — Apple ve Google ekosistemlerinde bir yazılım ürününün kaydedilmesi, imzalanması ve dağıtılması için kullanılan benzersiz bir uygulama tanımlayıcısıdır. Her uygulama, proje oluşturulurken Bundle ID'sini alır ve bu tanımlayıcı tüm yaşam döngüsü boyunca değişmeden kalır. Apple Developer Documentation'ya göre Bundle ID, hizmetleri, sertifikaları ve sağlama profillerini bağlamak için kullanılır.

Önemli Noktalar

  • App Bundle ID — mağazadaki her uygulama için benzersiz küresel bir tanımlayıcı
  • Biçim ters alan adı gösterimine dayanır: com.company.appname
  • Kayıt App Store Connect ve Google Play Console'da yapılır
  • Değiştirme — yayınladıktan sonra Bundle ID'yi değiştirmek yeni uygulama oluşturmadan imkansızdır
  • Hizmetler (Push, CloudKit, Firebase) Bundle ID aracılığıyla bağlanır

App Bundle ID Nedir

Bundle Identifier, işletim sistemi ve uygulama mağazasında bir uygulamayı benzersiz şekilde tanımlayan bir dizedir. iOS ve macOS'ta Bundle ID, Android'de ise Package Name olarak adlandırılır, ancak işlevsel olarak her ikisi de aynı rolü oynar: cihazda ve mağazada uygulamanın benzersizliğini sağlamak.

Bundle ID'nin Amacı

İşletim sistemi, cihazdaki uygulamaları ayırt etmek için Bundle ID'yi kullanır. Aynı tanımlayıcıya sahip iki uygulama aynı anda kurulamaz — sistem onları aynı ürün olarak ele alır. Uygulama mağazaları da yayın sırasında Bundle ID'nin benzersizliğini kontrol eder.

Tarihçe ve Adlandırma Standartları

Apple, Bundle ID'yi 2008 yılında iOS SDK'nın piyasaya sürülmesiyle tanıttı. Ters alan adı gösterimi biçimi, sınıf adı çakışmalarını önlemek için kullanıldığı Java'dan (paket adlandırma kuralı) ödünç alınmıştır. Google, bu uygulamayı Android için benimseyerek her iki mobil ekosistemde tutarlılık sağlamıştır.

PlatformAlan AdıÖrnek
iOS/macOSBundle Identifiercom.example.myapp
AndroidPackage Namecom.example.myapp
watchOSBundle Identifiercom.example.myapp.watchkit
tvOSBundle Identifiercom.example.myapp.tvos

Bundle ID Biçimi Nasıl Çalışır

Bundle ID, noktalarla ayrılmış birkaç bölümden oluşur. İlk kısım geliştirici veya şirket tanımlayıcısıdır (com, org, net). İkincisi şirket alan adıdır (example, google, apple). Sonraki bölümler uygulama adını ve platformu belirtir.

Bundle ID Yapısı

Tipik bir Bundle ID com.company.appname şeklindedir. Apple, küresel benzersizliği garanti altına almak için ters alan adı gösterimini kullanmayı önerir. Şirketin alan adı yoksa, e-posta kullanımına izin verilir: com.example.myapp veya org.example.myapp.

  • Bölüm 1 — ters sırada TLD: com, org, io, net
  • Bölüm 2 — şirket veya geliştirici alan adı: google, apple, mycompany
  • Bölüm 3 — uygulama adı: maps, mail, notes
  • Ek — platform veya uzantı: watchkit, todaywidget

Joker Bundle ID

Apple, Wildcard Bundle ID'yi — yıldız işaretli bir tanımlayıcı şablonunu destekler: com.example.*. Bu şablon, aynı şirketin birden çok uygulaması için tek bir App ID kullanılmasına olanak tanır. Wildcard ID geliştirme sırasında kullanışlıdır ancak bazı Apple hizmetlerinin kullanımını sınırladığı için üretim için önerilmez.

Joker sınırlamaları: Push bildirimleri, CloudKit, Uygulama İçi Satın Alma (In-App Purchase) ve Game Center, açık (explicit) bir Bundle ID gerektirir. com.example.* şablonu kullanıldığında bu hizmetler kullanılamaz. Üretim uygulamaları için, tüm Apple hizmetlerinin tam işlevselliğini sağlamak üzere her zaman açık bir Bundle ID kullanın.

Jokerin yanı sıra Apple, Apple Developer Program'a kayıt sırasında geliştirme ekibine atanan ön ek tanımlayıcılarını da destekler. Ön ek (Team ID), tüm App ID'lere ve sağlama profillerine otomatik olarak eklenir. İki farklı Team ID aynı Bundle ID'yi oluşturabilir, ancak cihazda farklı uygulamalar olarak kabul edilirler.

Konsollarda Bundle ID Kaydı

Bundle ID kaydı, bir uygulamayı yayınlamadan önce zorunlu bir adımdır. Apple ekosisteminde kayıt, Apple Developer Portal'da Certificates, Identifiers & Profiles bölümü aracılığıyla yapılır. Google Play'de Bundle ID, geliştirici konsolunda uygulama oluşturulurken belirtilir.

Apple Developer Portal'da Kayıt

Apple Developer portalında Identifiers bölümünü seçin, Register düğmesine tıklayın ve App ID türünü belirtin. Tam Bundle ID adını girin ve gerekli yetenekleri seçin: Push Notifications, CloudKit, Sign in with Apple. Kayıttan sonra tanımlayıcı, sağlama profilleri oluşturmak için kullanılabilir hale gelir.

swift
// Uygulama kodunda Bundle ID kontrolü
let bundleID = Bundle.main.bundleIdentifier
print("Current Bundle ID: \(bundleID ?? "unknown")")

// Derleme koşulları için Bundle ID kontrolü
if bundleID == "com.example.app.production" {
    // Üretim yapılandırması
    Analytics.shared.configure(.production)
}

Google Play Console'da Kayıt

Google Play Console, önceden Bundle ID kaydı gerektirmez. Tanımlayıcı, uygulama modülünün build.gradle dosyasında belirtilir ve tüm Google Play'de benzersiz olmalıdır. Uygulama oluşturulduktan sonra Package Name'i değiştirmek imkansızdır, bu nedenle tanımlayıcıyı dikkatlice seçin ve Google Play araması aracılığıyla benzersizliğini kontrol edin. Google, kaldırılan uygulamaların tanımlayıcılarını serbest bırakmaz, bu nedenle bir kez alınan Bundle ID diğer geliştiriciler için kullanılamaz durumda kalır.

App Store Connect'e kaydolurken, mevcut kayıtlı tanımlayıcılar kümesinden bir Bundle ID belirtmeniz gerekir. Tanımlayıcı henüz Apple Developer portalında kayıtlı değilse, sistem otomatik olarak oluşturmayı önerecektir. Kayıttan sonra Bundle ID ekibe bağlanır ve Apple desteğiyle iletişime geçmeden başka bir geliştirici hesabına aktarılamaz. Her Bundle ID, farklı ortamlar için birden çok sağlama profiline sahip olabilir: Development, Ad Hoc, App Store.

Uzantıları olan bir iOS uygulaması için Bundle ID kaydederken, her bileşen ayrı ayrı kaydedilmelidir. Widget uzantıları, klavyeler, Notification Service ve Watch App, ana tanımlayıcıdan türetilen kendi tanımlayıcılarına sahiptir. App Store Connect, bir App Record oluştururken bunları gruplandırarak tüm bileşenlerin tek bir uygulama olarak yayınlanmasına olanak tanır.

Xcode Projesinde Bundle ID Yapılandırması

Xcode'da Bundle ID yapılandırması birkaç yerde yapılır: Info.plist, Build Settings ve Signing & Capabilities. Merkezi alan, uygulama hedefindeki Bundle Identifier'dır. Push bildirimlerinden CloudKit'e kadar tüm Apple hizmetleri bu tanımlayıcıya bağlanır. Yanlış belirtilen bir Bundle ID, imza hatalarına ve App Store'da yayınlayamamaya yol açar.

Xcode'da Bundle ID Değiştirme

xml
<!-- Info.plist — Projenin temel Bundle ID'si -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>

<!-- Build Settings — PRODUCT_BUNDLE_IDENTIFIER değişkeni -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->

Xcode, Build Settings'te PRODUCT_BUNDLE_IDENTIFIER değişkenini kullanır. Farklı derleme yapılandırmaları için farklı değerler ayarlanabilir: Debug için com.example.app.dev ve Release için com.example.app. Bu, test için aynı cihazda üretim sürümünün yanına geliştirme sürümünü kurmak için kullanışlıdır.

Çoklu Hedef Yapılandırması

Uygulamanın uzantıları (Notification Service, Widget, Watch App) varsa, her uzantı bir sonek ile kendi Bundle ID'sini alır. Ana uygulama: com.example.app. Widget uzantısı: com.example.app.widget. Watch App: com.example.app.watchkit. Her tanımlayıcı Apple Developer Portal'da ayrı ayrı kaydedilir ve kendi sağlama profilini alır. Xcode, derleme sırasında bu bağımlılıkları otomatik olarak yönetir.

App Bundle ID ve Package Name Arasındaki Farklar

App Bundle ID (Apple) ve Package Name (Google), aynı amaca sahip benzer varlıklardır ancak iOS ve Android ekosistemlerinde farklı kullanım kuralları vardır. Her iki tanımlayıcı da ters alan adı gösterimini kullanır ve resmi uygulama mağazalarında yayınlandıktan sonra değiştirilemez.

İşlevsel Farklar

Apple ekosisteminde Bundle ID, sağlama profili ve sertifikalara bağlıdır. Geliştirme ekibi değiştiğinde, Bundle ID App Store Connect aracılığıyla hesaplar arasında aktarılabilir. Android'de Package Name, Google Play'deki uygulamaya sıkı sıkıya bağlıdır ve geliştirici hesapları arasında aktarılamaz.

ÖzellikiOS Bundle IDAndroid Package Name
Maksimum UzunlukSınırsız150 karakter
Bölüm AyırıcıNokta (.)Nokta (.)
İzin Verilen KarakterlerA-Z, a-z, 0-9, nokta, tireA-Z, a-z, 0-9, nokta, alt çizgi
JokerDesteklenir (*)Desteklenmez
Kodda KullanımBundle.main.bundleIdentifierBuildConfig.APPLICATION_ID

Farklılıklara rağmen, her iki tanımlayıcı da kritik bir rol oynar: onlar olmadan resmi bir mağazada uygulama yayınlamak imkansızdır. Platformlar arası projeler için Öneri — Firebase, Analytics ve diğer hizmetlerle entegrasyonu basitleştirmek için iOS ve Android sürümlerinde aynı tanımlayıcıyı kullanın. Bu ayrıca geliştirme ekibi için gezinmeyi de basitleştirir: her iki proje için tek bir tanımlayıcı, CI/CD kurulumu ve ortam yapılandırması sırasında karışıklığı azaltır.

Flutter veya React Native ile geliştirme yaparken, kod tabanı paylaşıldığı ve birçok otomatik derleme aracı her iki platform için de aynı paket adını beklediği için tek bir tanımlayıcı özellikle önemlidir. Bir Firebase projesi de iOS ve Android için tek bir tanımlayıcıya bağlanarak analiz ve çökme raporlaması kurulumunu basitleştirir.

Sıkça Sorulan Sorular

Uygulamayı yayınladıktan sonra Bundle ID değiştirilebilir mi?

Bundle ID'yi değiştirmek App Store veya Google Play'de yayınlandıktan sonra imkansızdır. Sistem yeni tanımlayıcıyı tamamen farklı bir uygulama olarak ele alacaktır. Mevcut bir ürünü güncellemek için Bundle ID'nin uygulamanın tüm yaşam döngüsü boyunca değişmeden kalması gerekir.

İki uygulama aynı Bundle ID'ye sahip olursa ne olur?

Bir iOS veya Android cihazı, ilkinin üzerine aynı tanımlayıcıya sahip ikinci bir uygulamanın kurulmasına izin vermez. Sistem bir hata gösterecek ve mevcut uygulamayı silmeyi önerecektir. Mağazalarda, yinelenen bir Bundle ID ile yayınlama da engellenecektir.

Yeni bir proje için Bundle ID nasıl doğru seçilir?

Şirketinizin ters alan adı gösterimini kullanın: com.companyname.appname. Tirelerden ve özel karakterlerden kaçının. Uygulamanın uzantıları varsa, noktalarla ayrılmış sonekler ekleyin. Tanımlayıcının benzersiz olduğundan ve başka bir geliştirici tarafından alınmadığından emin olun.

Her uygulama uzantısının ayrı bir Bundle ID'ye ihtiyacı var mı?

Evet, her uzantı — widget, Watch App, Notification Service — kendi Bundle ID'sini gerektirir. Tanımlayıcılar bir hiyerarşi oluşturur: com.example.app taban olarak, com.example.app.widget widget için, com.example.app.watchkit Watch için. Tümü Apple Developer Portal'da ayrı ayrı kaydedilir ve ana uygulama ile ortak bir App ID'yi paylaşır.

Apple Developer portalında Bundle ID ve App ID arasındaki fark nedir?

Bundle ID, uygulama kodunda bir tanımlayıcı dizedir. App ID, Apple Developer Portal'da bir Bundle ID'yi etkin hizmetler (capabilities) kümesiyle birleştiren bir nesnedir. App ID, Bundle ID temel alınarak oluşturulur ve sağlama profilleri oluşturmak için kullanılır.

Özet

  • App Bundle ID — iOS ve Android ekosistemlerinde benzersiz uygulama tanımlayıcısı
  • Biçim ters alan adı gösterimine dayanır: com.company.appname
  • Değiştirme — yayınladıktan sonra Bundle ID'yi değiştirmek mağazada yeni uygulama oluşturmadan imkansızdır
  • Joker Bundle ID com.example.* geliştirme için kullanışlıdır ancak Push, CloudKit ve Uygulama İçi Satın Alma ile uyumlu değildir
  • Uzantılar noktayla ayrılmış soneklerle kendi Bundle ID'lerini alır
  • Kayıt sırasıyla Apple Developer Portal ve Google Play Console'da yapılır
  • Öneri — tanımlayıcıyı dikkatlice seçin, yayınlamadan önce benzersizliği doğrulayın

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun