Info.plist: apa itu, kunci wajib dan pengaturan saat startup

Penulis: IT Sectr Diterbitkan: 2026-05-31 Waktu membaca: 8 mnt

Info.plist adalah file XML konfigurasi aplikasi iOS dan macOS yang berisi metadata, izin, dan pengaturan startup. Ini diproses oleh sistem sebelum inisialisasi kode aplikasi. Menurut Apple Developer, 2025, tanpa Info.plist yang dikonfigurasi dengan benar, aplikasi tidak akan lolos review App Store. Info.plist menentukan identifier bundle, versi build, izin yang diminta, dan orientasi layar yang didukung.

Poin utama

  • Info.plist — kamus XML dengan kunci konfigurasi aplikasi iOS/macOS dalam format plist
  • Bundle identifier — identifier unik aplikasi di ekosistem Apple untuk penandatanganan dan layanan
  • Kunci privasi (NSCameraUsageDescription) wajib untuk akses ke kamera, mikrofon, dan geolokasi
  • Custom URL schemes dikonfigurasi melalui kunci CFBundleURLTypes untuk deep link
  • UIRequiredDeviceCapabilities menetapkan persyaratan minimum perangkat untuk instalasi dari App Store

Apa itu Info.plist

Info.plist adalah file dalam format XML dengan elemen root dict yang berisi pasangan kunci-nilai dalam bentuk property list. File ini terletak di dalam bundle aplikasi dan dibaca oleh sistem setiap kali startup sebelum kode dieksekusi. Format plist mendukung string, angka, array, kamus, tanggal, dan nilai boolean, memungkinkan deskripsi konfigurasi yang kompleks.

Apple menggunakan Info.plist untuk menentukan identitas aplikasi, kemampuannya, dan persyaratannya. Mengubah beberapa kunci memerlukan pembangunan ulang bundle karena kunci tersebut memengaruhi metadata yang diperiksa oleh App Store saat mengunggah build. Misalnya, mengubah CFBundleVersion atau CFBundleIdentifier setelah publikasi dapat mengganggu proses pembaruan aplikasi, karena App Store Connect menggunakan nilai-nilai ini untuk mengidentifikasi versi.

Kunci dasar dibuat secara otomatis saat membuat proyek di Xcode, tetapi sebagian besar pengaturan ditambahkan secara manual seiring berkembangnya fungsionalitas aplikasi. Xcode menyediakan editor grafis Info.plist dengan daftar drop-down untuk kunci standar, yang mengurangi risiko kesalahan ketik. Namun, untuk konfigurasi yang kompleks seperti Scene Manifest atau Background Modes, disarankan untuk mengedit XML sumber secara langsung.

Kunci wajib Info.plist

Beberapa kunci Info.plist wajib untuk publikasi di App Store. Ketidakhadirannya menyebabkan penolakan build pada tahap validasi. Apple secara otomatis memeriksa kunci-kunci ini saat mengunggah arsip melalui Xcode Organizer atau Transporter. Pengembang harus memastikan semua bidang wajib diisi dengan benar sebelum dikirim untuk ditinjau.

Identifier bundle

Kunci CFBundleIdentifier menetapkan identifier unik aplikasi dalam notasi domain terbalik (com.perusahaan.namaaplikasi). Ini digunakan untuk penandatanganan kode, notifikasi Push, CloudKit, App Groups, dan banyak layanan Apple lainnya. Mengubah identifier setelah publikasi akan dianggap oleh App Store sebagai aplikasi baru, dan pengguna yang ada tidak akan menerima pembaruan. Oleh karena itu, identifier harus tidak berubah sepanjang siklus hidup aplikasi.

xml
<key>CFBundleIdentifier</key>
<string>com.itsectr.myapp</string>

Versi aplikasi

Kunci CFBundleShortVersionString (versi yang ditampilkan) dan CFBundleVersion (nomor build) digunakan oleh App Store Connect dan sistem untuk mengelola pembaruan. Versi ditentukan dalam format major.minor.patch. Nomor build harus meningkat dengan setiap build yang diunggah ke App Store Connect, bahkan jika versi aplikasi tidak berubah. Apple menggunakan CFBundleVersion untuk menentukan apakah build tersebut baru atau duplikat dari yang sudah diunggah. Jika nomor build cocok dengan yang sudah diunggah sebelumnya, akan muncul kesalahan ITMS-90161.

xml
<key>CFBundleShortVersionString</key>
<string>1.2.0</string>
<key>CFBundleVersion</key>
<string>42</string>

Orientasi antarmuka yang didukung

Kunci UISupportedInterfaceOrientations menentukan orientasi layar yang didukung untuk iPhone. Untuk iPad, digunakan kunci terpisah UISupportedInterfaceOrientations~ipad dengan sufiks perangkat. Setiap orientasi ditentukan dengan string: UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight, UIInterfaceOrientationPortraitUpsideDown. Jika aplikasi hanya mendukung orientasi potret, App Store akan menolak build kecuali jika khusus iPhone dan hanya potret yang ditentukan untuk iPad.

xml
<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
</array>

Izin dan kunci privasi

Mulai dari iOS 10, Apple mewajibkan deskripsi setiap izin yang diminta melalui kunci dengan prefiks NS (NeXTStep). Deskripsi ditampilkan kepada pengguna dalam dialog sistem saat pertama kali meminta akses ke API privat. Ketidakhadiran kunci NS yang sesuai saat memanggil API yang memerlukan izin akan menyebabkan aplikasi berakhir segera dengan pengecualian yang hanya tercatat di log crash.

KunciTujuan
NSCameraUsageDescriptionAkses ke kamera untuk foto dan video
NSPhotoLibraryUsageDescriptionAkses ke pustaka foto
NSLocationWhenInUseUsageDescriptionGeolokasi saat penggunaan aktif
NSMicrophoneUsageDescriptionAkses ke mikrofon untuk merekam suara
NSContactsUsageDescriptionAkses ke kontak perangkat

Setiap kunci privasi harus berisi deskripsi yang dapat dipahami pengguna tentang alasan permintaan. Teks kosong atau templat seperti “Untuk pengoperasian aplikasi” atau “Akses diperlukan” akan menyebabkan penolakan di App Store. Deskripsi harus menjelaskan fungsionalitas spesifik: “Akses ke kamera diperlukan untuk memindai kode QR dan membuat foto profil”. Disarankan untuk menggunakan versi deskripsi yang dilokalisasi melalui file InfoPlist.strings untuk setiap bahasa yang didukung.

Ketidakhadiran kunci NS yang diperlukan saat memanggil API dengan akses ke data privat menyebabkan crash aplikasi. Sistem menghentikan proses dengan pengecualian, yang hanya terlihat di log laporan crash dari Xcode atau Firebase Crashlytics. Pengguna hanya melihat penutupan aplikasi secara tiba-tiba tanpa penjelasan apa pun. Oleh karena itu, sebelum menambahkan fungsionalitas baru yang menggunakan kamera, mikrofon, atau geolokasi, Anda harus terlebih dahulu menambahkan kunci privasi yang sesuai di Info.plist, lalu mengimplementasikan panggilan API.

Custom URL Schemes dan App Links

Kunci CFBundleURLTypes mendaftarkan skema URL kustom untuk deep link di aplikasi. Ini memungkinkan membuka aplikasi dari browser, email, atau aplikasi lain melalui tautan berbentuk myapp://profile/123. Setiap skema mengidentifikasi aplikasi secara unik: jika dua aplikasi mendaftarkan skema yang sama, sistem akan menampilkan dialog pilihan kepada pengguna.

xml
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.itsectr.myapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
    </dict>
</array>

Untuk mendukung Universal Links, diperlukan kunci com.apple.developer.associated-domains di file Entitlements, bukan di Info.plist. Universal Links hanya berfungsi jika ada file apple-app-site-association yang dikonfigurasi di server yang menghubungkan domain dengan aplikasi. Tidak seperti skema URL kustom, Universal Links tidak menampilkan dialog konfirmasi dan tidak bertentangan dengan aplikasi lain, karena menggunakan tautan HTTPS, bukan skema kustom. Namun, mereka memerlukan domain dengan sertifikat SSL yang valid.

Skema kustom dapat bertentangan dengan skema standar iOS. Disarankan untuk menggunakan skema dengan panjang setidaknya 4 karakter untuk meminimalkan benturan dengan aplikasi lain. Misalnya, skema „fb” terlalu pendek dan dapat menyebabkan konflik. Lebih baik menggunakan notasi terbalik: myapp:// daripada app://. Perlu diingat juga bahwa jika aplikasi dihapus tetapi aplikasi lain telah mendaftarkan skema yang sama, pengguna mungkin mengalami perilaku yang tidak terduga saat menavigasi melalui tautan.

Konfigurasi startup dan mode latar belakang

Kunci UIBackgroundModes mendeklarasikan kemampuan latar belakang aplikasi. Setiap mode memerlukan deskripsi yang sesuai di Info.plist dan konfirmasi di capabilities proyek Xcode. Tanpa menentukan mode, sistem dapat memaksa penghentian tugas latar belakang setelah 30 detik atau saat kekurangan sumber daya.

xml
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
    <string>remote-notification</string>
    <string>location</string>
    <string>processing</string>
</array>

Kunci UIApplicationSupportsMultipleScenes mengaktifkan dukungan multitasking di iPad dan Mac Catalyst. Tanpa kunci ini, aplikasi tidak dapat menggunakan SwiftUI ScenePhase atau UIKit UISceneDelegate untuk mengelola beberapa jendela. Di iPadOS, pengguna dapat membuka beberapa jendela dari aplikasi yang sama, menyeret konten di antaranya, dan menggunakan Split View. Jika aplikasi tidak mendukung mode multi-jendela, mengatur kunci ini ke false akan menonaktifkan fungsionalitas yang sesuai.

Kunci LSRequiresIPhoneOS melarang pemasangan aplikasi di iPad. Digunakan untuk aplikasi khusus iPhone yang tidak mendukung antarmuka iPad atau belum diadaptasi untuk layar besar. Namun, Apple tidak merekomendasikan penggunaan kunci ini tanpa kebutuhan, karena pengguna mengharapkan aplikasi berfungsi di semua perangkat dengan iOS dan iPadOS. Jika aplikasi tetap terbatas pada iPhone, pastikan persyaratan ini dibenarkan secara teknis dan disebutkan dalam deskripsi App Store.

Kunci UIViewControllerBasedStatusBarAppearance mengontrol gaya bilah status. Jika diatur ke NO, gaya bilah status diatur secara global melalui kunci UIStatusBarStyle di Info.plist. Jika YES (default sejak iOS 7), setiap ViewController dapat mengelola bilah statusnya sendiri melalui override preferredStatusBarStyle. Untuk aplikasi modern, disarankan untuk membiarkan YES agar memiliki bilah status yang berbeda di layar yang berbeda, misalnya terang di latar belakang gelap dan gelap di latar belakang terang.

Kunci UIApplicationExitsOnSuspend memaksa aplikasi untuk berhenti sepenuhnya saat beralih ke mode latar belakang, bukan ditangguhkan. Jarang digunakan, hanya untuk aplikasi dengan persyaratan keamanan tinggi: aplikasi perbankan atau aplikasi untuk bekerja dengan data rahasia. Dalam hal ini, pengguna kehilangan kemampuan untuk kembali dengan cepat ke aplikasi, dan setiap startup terjadi dari keadaan bersih. App Store dapat meminta pembenaran penggunaan kunci ini saat peninjauan.

Kunci NSAppTransportSecurity mengelola koneksi jaringan aplikasi. Mulai dari iOS 9, App Transport Security (ATS) memblokir semua koneksi HTTP secara default, mewajibkan HTTPS. Untuk mengizinkan sementara permintaan HTTP ke domain tertentu, digunakan kamus NSExceptionDomains di dalam NSAppTransportSecurity. Untuk pengembangan, penonaktifan total ATS melalui NSAllowsArbitraryLoads = true diperbolehkan, tetapi Apple memerlukan pembenaran dan tidak meloloskan build semacam itu tanpa alasan yang kuat. Dalam build produksi, ATS harus diaktifkan untuk semua domain yang berinteraksi dengan data pengguna.

Pertanyaan yang sering diajukan

Di mana menemukan Info.plist di proyek Xcode?

File Info.plist berada di folder proyek dengan nama yang sama dengan nama aplikasi. Di Xcode, itu ditampilkan di navigator proyek dalam grup Supporting Files dengan ikon buku biru. Juga dapat ditemukan melalui pencarian Spotlight di proyek.

Bisakah Info.plist diedit secara manual?

Ya, Info.plist dapat diedit di editor teks apa pun atau melalui antarmuka grafis Xcode. Pengeditan manual memberikan kontrol penuh atas konten, tetapi memerlukan perhatian pada sintaks XML: setiap direktif <key> pembuka harus memiliki </key> yang sesuai, dan tipe data harus sesuai dengan yang diharapkan Apple.

Apa itu Info.plist di proyek SwiftUI?

Di proyek SwiftUI, Info.plist bekerja identik dengan proyek UIKit. Selain itu, mungkin diperlukan kunci UIApplicationSceneManifest untuk mengonfigurasi Scene Configuration, jika proyek tidak menggunakan protokol App untuk mengelola scene. Protokol App SwiftUI secara otomatis menghasilkan konfigurasi scene, tetapi untuk kustomisasi diperlukan penambahan kunci secara manual.

Bagaimana cara menambahkan kunci kustom di Info.plist?

Buka Info.plist di Xcode, klik tanda plus, dan masukkan nama kunci. Untuk kunci kustom, gunakan prefiks perusahaan untuk menghindari konflik dengan kunci sistem Apple, misalnya ITSCustomKey, bukan CustomKey. Tipe nilai (String, Number, Array, Dictionary) dipilih tergantung pada format data yang diharapkan.

Mengapa App Store menolak build karena Info.plist?

Penyebab umum: tidak adanya kunci privasi untuk izin yang diminta, CFBundleIdentifier yang salah, ketidakcocokan versi antara Info.plist dan App Store Connect, nilai kosong pada kunci NS. Periksa semua kunci NS untuk API yang digunakan dan pastikan setiap deskripsi berisi penjelasan yang bermakna dalam bahasa lokalisasi aplikasi.

Ringkasan

  • Info.plist — konfigurasi XML aplikasi iOS/macOS dengan metadata, izin, dan pengaturan startup
  • CFBundleIdentifier dan CFBundleVersion — kunci wajib untuk identifikasi dan publikasi di App Store
  • Kunci privasi (NSCameraUsageDescription) wajib untuk akses ke kamera, mikrofon, dan API privat lainnya
  • Skema URL kustom dikonfigurasi melalui CFBundleURLTypes, Universal Links melalui Entitlements dan apple-app-site-association
  • UIBackgroundModes mendeklarasikan kemampuan latar belakang aplikasi untuk berfungsi dengan baik di latar belakang
  • Ketidakhadiran kunci wajib menyebabkan crash aplikasi atau penolakan build App Store
  • Pengeditan Info.plist tersedia melalui antarmuka Xcode atau editor teks dengan kontrol sintaks XML

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.

Diskusikan proyek

Baca juga