App Bundle ID — adalah pengenal unik aplikasi yang digunakan di ekosistem Apple dan Google untuk pendaftaran, penandatanganan, dan distribusi produk perangkat lunak. Setiap aplikasi mendapatkan Bundle ID-nya sendiri saat pembuatan proyek, dan pengenal ini tetap tidak berubah sepanjang siklus hidup. Menurut Apple Developer Documentation, Bundle ID digunakan untuk menghubungkan layanan, sertifikat, dan profil penandatanganan.
Poin Penting
Bundle Identifier — adalah string yang secara unik mengidentifikasi aplikasi di sistem operasi dan toko aplikasi. Di iOS dan macOS disebut Bundle ID, di Android — Package Name, meskipun secara fungsional keduanya menjalankan peran yang sama: memastikan keunikan aplikasi di perangkat dan toko.
Sistem operasi menggunakan Bundle ID untuk membedakan aplikasi di perangkat. Dua aplikasi dengan pengenal yang sama tidak dapat diinstal secara bersamaan — sistem menganggapnya sebagai produk yang sama. Toko aplikasi juga memeriksa keunikan Bundle ID saat publikasi.
Apple memperkenalkan Bundle ID dengan dirilisnya iOS SDK pada tahun 2008. Format reverse domain notation diadopsi dari Java (package naming convention), di mana ia digunakan untuk mencegah konflik nama kelas. Google mengadopsi praktik ini untuk Android, yang memastikan keseragaman di kedua ekosistem seluler.
| Platform | Nama bidang | Contoh |
|---|---|---|
| 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 terdiri dari beberapa segmen yang dipisahkan oleh titik. Bagian pertama — pengenal pengembang atau perusahaan (com, org, net). Kedua — domain perusahaan (example, google, apple). Segmen berikutnya menentukan nama aplikasi dan platform.
Bundle ID tipikal terlihat seperti com.company.appname. Apple merekomendasikan penggunaan notasi terbalik dari nama domain untuk menjamin keunikan global. Jika perusahaan tidak memiliki domain, penggunaan email diperbolehkan: com.example.myapp atau org.example.myapp.
Apple mendukung Wildcard Bundle ID — template pengenal dengan tanda bintang: com.example.*. Template semacam itu memungkinkan penggunaan satu App ID untuk beberapa aplikasi dari satu perusahaan. Wildcard ID nyaman pada tahap pengembangan, tetapi tidak disarankan untuk produksi karena membatasi penggunaan beberapa layanan Apple.
Batasan wildcard: Push Notifications, CloudKit, In-App Purchase dan Game Center memerlukan Bundle ID eksplisit (explicit). Saat menggunakan template com.example.*, layanan-layanan ini tidak tersedia. Untuk aplikasi produksi, selalu gunakan explicit Bundle ID untuk memastikan fungsionalitas penuh semua layanan Apple.
Selain wildcard, Apple mendukung pengenal awalan yang ditetapkan ke tim pengembang saat pendaftaran di Apple Developer Program. Awalan (Team ID) secara otomatis ditambahkan ke semua App ID dan profil penandatanganan. Dua Team ID yang berbeda dapat membuat Bundle ID yang sama, tetapi di perangkat mereka dianggap sebagai aplikasi yang berbeda.
Pendaftaran Bundle ID — tahap wajib sebelum publikasi aplikasi. Di ekosistem Apple, pendaftaran dilakukan di Apple Developer Portal melalui bagian Certificates, Identifiers & Profiles. Di Google Play, Bundle ID ditentukan saat membuat aplikasi di konsol pengembang.
Di portal Apple Developer, pilih bagian Identifiers, klik tombol Register dan tentukan jenis App ID. Masukkan nama persis Bundle ID dan pilih capabilities yang diperlukan: Push Notifications, CloudKit, Sign in with Apple. Setelah pendaftaran, pengenal tersedia untuk membuat profil penandatanganan.
// Memeriksa Bundle ID dalam kode aplikasi
let bundleID = Bundle.main.bundleIdentifier
print("Bundle ID saat ini: \(bundleID ?? "unknown")")
// Memeriksa Bundle ID untuk kondisi kompilasi
if bundleID == "com.example.app.production" {
// Konfigurasi produksi
Analytics.shared.configure(.production)
}
Google Play Console tidak memerlukan pendaftaran awal Bundle ID. Pengenal ditentukan dalam file build.gradle modul aplikasi dan harus unik di seluruh Google Play. Setelah aplikasi dibuat, perubahan Package Name tidak mungkin dilakukan, jadi pilihlah pengenal dengan hati-hati dan periksa keunikannya melalui pencarian di Google Play. Google tidak membebaskan pengenal aplikasi yang dihapus, jadi Bundle ID yang pernah diambil tetap tidak tersedia untuk pengembang lain.
Saat mendaftar di App Store Connect, Bundle ID harus ditentukan dari kumpulan pengenal yang sudah terdaftar. Jika pengenal belum terdaftar di portal Apple Developer, sistem akan menawarkan untuk membuatnya secara otomatis. Setelah pendaftaran, Bundle ID terikat ke tim dan tidak dapat dipindahkan ke akun pengembang lain tanpa menghubungi dukungan Apple. Setiap Bundle ID dapat memiliki beberapa profil penandatanganan untuk lingkungan yang berbeda: Development, Ad Hoc, App Store.
Saat mendaftarkan Bundle ID untuk aplikasi iOS dengan ekstensi, setiap komponen harus didaftarkan secara terpisah. Ekstensi widget, keyboard, Notification Service dan Watch App memiliki pengenal sendiri yang berasal dari pengenal utama. App Store Connect menggabungkannya ke dalam grup saat membuat App Record, yang memungkinkan publikasi semua komponen sebagai satu aplikasi.
Konfigurasi Bundle ID di Xcode dilakukan di beberapa tempat: Info.plist, Build Settings dan Signing & Capabilities. Bidang pusat — Bundle Identifier di target aplikasi. Semua layanan Apple, dari Push Notifications hingga CloudKit, terhubung ke pengenal ini. Bundle ID yang salah menyebabkan kesalahan penandatanganan dan ketidakmungkinan publikasi di App Store.
<!-- Info.plist — Bundle ID dasar proyek -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — variabel PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode menggunakan variabel PRODUCT_BUNDLE_IDENTIFIER di Build Settings. Untuk konfigurasi kompilasi yang berbeda, nilai yang berbeda dapat ditetapkan: com.example.app.dev untuk Debug dan com.example.app untuk Release. Ini nyaman untuk instalasi paralel versi pengembangan di samping versi produksi pada perangkat yang sama untuk pengujian.
Jika aplikasi memiliki ekstensi (Notification Service, Widget, Watch App), setiap ekstensi mendapatkan Bundle ID sendiri dengan akhiran. Aplikasi utama: com.example.app. Ekstensi widget: com.example.app.widget. Watch App: com.example.app.watchkit. Setiap pengenal didaftarkan secara terpisah di Apple Developer Portal dan mendapatkan profil penandatanganan terpisah. Xcode secara otomatis mengelola dependensi ini saat kompilasi.
App Bundle ID (Apple) dan Package Name (Google) — adalah entitas analog dengan tujuan yang sama, tetapi dengan aturan penggunaan yang berbeda di ekosistem iOS dan Android. Kedua pengenal menggunakan reverse domain notation dan tidak dapat diubah setelah publikasi di toko aplikasi resmi.
Di ekosistem Apple, Bundle ID terhubung dengan profil penandatanganan dan sertifikat. Saat berganti tim pengembang, Bundle ID dapat ditransfer antar akun melalui App Store Connect. Di Android, Package Name terikat secara kaku ke aplikasi di Google Play dan tidak dapat ditransfer antar akun pengembang.
| Karakteristik | iOS Bundle ID | Android Package Name |
|---|---|---|
| Panjang maksimal | Tidak terbatas | 150 karakter |
| Pemisah segmen | Titik (.) | Titik (.) |
| Karakter yang diizinkan | A-Z, a-z, 0-9, titik, tanda hubung | A-Z, a-z, 0-9, titik, garis bawah |
| Wildcard | Didukung (*) | Tidak didukung |
| Penggunaan dalam kode | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
Meskipun ada perbedaan, kedua pengenal memainkan peran kritis: tanpa mereka, publikasi aplikasi di toko resmi tidak mungkin dilakukan. Rekomendasi untuk proyek lintas platform — gunakan pengenal yang sama di versi iOS dan Android untuk menyederhanakan integrasi dengan Firebase, Analytics, dan layanan lainnya. Ini juga memudahkan navigasi bagi tim pengembang: satu pengenal untuk kedua proyek mengurangi kebingungan saat konfigurasi CI/CD dan pengaturan lingkungan.
Saat pengembangan dengan Flutter atau React Native, pengenal tunggal sangat penting karena basis kode bersifat bersama dan banyak alat kompilasi otomatis mengharapkan nama paket yang sama untuk kedua platform. Proyek Firebase juga terhubung ke satu pengenal untuk iOS dan Android, yang menyederhanakan konfigurasi analitik dan pelaporan kesalahan.
Pertanyaan yang Sering Diajukan
Mengubah Bundle ID setelah publikasi di App Store atau Google Play tidak mungkin dilakukan. Sistem akan menganggap pengenal baru sebagai aplikasi yang sama sekali berbeda. Untuk memperbarui produk yang ada, Bundle ID harus tetap tidak berubah sepanjang siklus hidup aplikasi.
Perangkat iOS atau Android tidak akan mengizinkan penginstalan aplikasi kedua dengan pengenal yang sama di atas aplikasi pertama. Sistem akan menampilkan kesalahan dan menawarkan untuk menghapus aplikasi yang ada. Di toko, publikasi dengan Bundle ID duplikat juga akan diblokir.
Gunakan reverse domain notation perusahaan Anda: com.namaperusahaan.namaaplikasi. Hindari tanda hubung dan karakter khusus. Jika aplikasi memiliki ekstensi, tambahkan akhiran melalui titik. Pastikan pengenal unik dan tidak diambil oleh pengembang lain.
Ya, setiap ekstensi — widget, Watch App, Notification Service — memerlukan Bundle ID sendiri. Pengenal membentuk hierarki: com.example.app sebagai dasar, com.example.app.widget untuk widget, com.example.app.watchkit untuk Watch. Semuanya didaftarkan secara terpisah di Apple Developer Portal dan menggunakan App ID bersama dengan aplikasi induk.
Bundle ID — adalah string pengenal dalam kode aplikasi. App ID — adalah objek di Apple Developer Portal yang menggabungkan Bundle ID dengan serangkaian layanan yang diaktifkan (capabilities). App ID dibuat berdasarkan Bundle ID dan digunakan untuk menghasilkan profil penandatanganan.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga