Info.plist: ano ito, mga mandatoryong key at setting sa pagsisimula

May-akda: IT Sectr Nai-publish: 2026-05-31 Oras ng pagbabasa: 8 min

Ang Info.plist ay isang XML file ng configuration ng iOS at macOS apps na naglalaman ng metadata, mga pahintulot, at mga setting ng pagsisimula. Ito ay pinoproseso ng system bago ang pagsisimula ng code ng app. Ayon sa Apple Developer, 2025, kung walang tamang naka-configure na Info.plist, ang app ay hindi makakapasa sa review ng App Store. Info.plist ay tumutukoy sa bundle identifier, bersyon ng build, mga hinihinging pahintulot, at mga suportadong oryentasyon ng screen.

Mga pangunahing punto

  • Info.plist — XML diksyunaryo na may mga key ng configuration ng iOS/macOS app sa format na plist
  • Bundle identifier — natatanging identifier ng app sa ecosystem ng Apple para sa pagpirma at mga serbisyo
  • Mga key ng privacy (NSCameraUsageDescription) ay mandatory para sa access sa camera, mikropono, at geolokasyon
  • Custom URL schemes ay naka-configure sa pamamagitan ng key na CFBundleURLTypes para sa malalalim na link
  • UIRequiredDeviceCapabilities ay nagtatakda ng minimum na kinakailangan ng device para sa pag-install mula sa App Store

Ano ang Info.plist

Ang Info.plist ay isang file sa XML na format na may root element na dict na naglalaman ng mga pares ng key-value sa anyo ng property list. Ito ay matatagpuan sa loob ng bundle ng app at binabasa ng system sa bawat pagsisimula bago isakatuparan ang code. Ang format na plist ay sumusuporta sa mga string, numero, array, diksyunaryo, petsa, at boolean na halaga, na nagpapahintulot sa paglalarawan ng mga kumplikadong configuration.

Ginagamit ng Apple ang Info.plist upang tukuyin ang pagkakakilanlan ng app, mga kakayahan nito, at mga kinakailangan. Ang pagbabago ng ilang mga key ay nangangailangan ng muling pagbuo ng bundle dahil ang mga ito ay nakakaapekto sa metadata na sinusuri ng App Store kapag nag-a-upload ng build. Halimbawa, ang pagbabago ng CFBundleVersion o CFBundleIdentifier pagkatapos ng publikasyon ay maaaring makagambala sa proseso ng pag-update ng app, dahil ginagamit ng App Store Connect ang mga halagang ito para sa pagtukoy ng mga bersyon.

Ang mga pangunahing key ay awtomatikong nilikha kapag gumagawa ng proyekto sa Xcode, ngunit ang karamihan sa mga setting ay manu-manong idinaragdag habang lumalaki ang functionality ng app. Ang Xcode ay nagbibigay ng graphical editor ng Info.plist na may mga drop-down list para sa mga standard key, na nagbabawas ng panganib ng mga typo. Gayunpaman, para sa mga kumplikadong configuration tulad ng Scene Manifest o Background Modes, inirerekomenda ang direktang pag-edit ng source XML.

Mga mandatoryong key ng Info.plist

Ang ilang mga key ng Info.plist ay mandatory para sa publikasyon sa App Store. Ang kanilang kawalan ay humahantong sa pagtanggi ng build sa yugto ng pagpapatunay. Awtomatikong sinusuri ng Apple ang mga key na ito kapag nag-a-upload ng archive sa pamamagitan ng Xcode Organizer o Transporter. Dapat tiyakin ng developer na ang lahat ng mandatoryong field ay wastong napunan bago ipadala para sa review.

Mga identifier ng bundle

Ang key na CFBundleIdentifier ay nagtatakda ng natatanging identifier ng app sa reverse domain notation (com.kumpanya.appname). Ito ay ginagamit para sa pagpirma ng code, Push notification, CloudKit, App Groups, at marami pang ibang serbisyo ng Apple. Ang pagbabago ng identifier pagkatapos ng publikasyon ay itinuturing ng App Store bilang isang bagong app, at ang mga umiiral na gumagamit ay hindi makakatanggap ng update. Samakatuwid, ang identifier ay dapat manatiling hindi nagbabago sa buong siklo ng buhay ng app.

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

Bersyon ng app

Ang mga key na CFBundleShortVersionString (ipinapakitang bersyon) at CFBundleVersion (numero ng build) ay ginagamit ng App Store Connect at system para sa pamamahala ng mga update. Ang bersyon ay tinutukoy sa format na major.minor.patch. Ang numero ng build ay dapat tumaas sa bawat build na ina-upload sa App Store Connect, kahit na hindi nagbabago ang bersyon ng app. Ginagamit ng Apple ang CFBundleVersion upang matukoy kung ang build ay bago o duplicate ng isang na-upload na. Kung ang numero ng build ay tumugma sa isang naunang na-upload, lalabas ang error na ITMS-90161.

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

Mga suportadong oryentasyon ng interface

Ang mga key na UISupportedInterfaceOrientations ay tumutukoy sa mga suportadong oryentasyon ng screen para sa iPhone. Para sa iPad, ginagamit ang hiwalay na key na UISupportedInterfaceOrientations~ipad na may suffix ng device. Ang bawat oryentasyon ay tinutukoy ng isang string: UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight, UIInterfaceOrientationPortraitUpsideDown. Kung ang app ay sumusuporta lamang sa portrait na oryentasyon, tatanggihan ng App Store ang build maliban kung ito ay iPhone-only at portrait lamang ang tinukoy para sa iPad.

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

Mga pahintulot at key ng privacy

Simula sa iOS 10, hinihingi ng Apple ang paglalarawan ng bawat hinihinging pahintulot sa pamamagitan ng mga key na may prefix na NS (NeXTStep). Ang paglalarawan ay ipinapakita sa gumagamit sa system dialog sa unang paghingi ng access sa mga pribadong API. Ang kawalan ng kaukulang NS key kapag tumatawag ng API na nangangailangan ng pahintulot ay humahantong sa agarang pagtatapos ng app na may exception na naitala lamang sa mga crash log.

KeyLayunin
NSCameraUsageDescriptionAccess sa camera para sa larawan at video
NSPhotoLibraryUsageDescriptionAccess sa library ng larawan
NSLocationWhenInUseUsageDescriptionGeolokasyon habang aktibong ginagamit
NSMicrophoneUsageDescriptionAccess sa mikropono para sa pag-record ng tunog
NSContactsUsageDescriptionAccess sa mga contact ng device

Ang bawat key ng privacy ay dapat maglaman ng paglalarawan na mauunawaan ng gumagamit tungkol sa dahilan ng kahilingan. Ang mga walang laman o template na teksto, tulad ng “Para sa pagpapatakbo ng app” o “Kinakailangan ang access”, ay humahantong sa pagtanggi sa App Store. Ang paglalarawan ay dapat magpaliwanag ng tiyak na functionality: “Kailangan ang access sa camera para sa pag-scan ng mga QR code at paggawa ng mga larawan sa profile”. Inirerekomenda ang paggamit ng mga naka-localize na bersyon ng mga paglalarawan sa pamamagitan ng mga file na InfoPlist.strings para sa bawat suportadong wika.

Ang kawalan ng kinakailangang NS key kapag tumatawag ng API na may access sa pribadong data ay nagdudulot ng crash ng app. Tinatapos ng system ang proseso na may exception, na makikita lamang sa mga log ng crash reports mula sa Xcode o Firebase Crashlytics. Ang gumagamit ay nakakakita lamang ng biglaang pagsasara ng app nang walang anumang paliwanag. Samakatuwid, bago magdagdag ng bagong functionality na gumagamit ng camera, mikropono, o geolokasyon, dapat munang idagdag ang kaukulang key ng privacy sa Info.plist, pagkatapos ay ipatupad ang tawag sa API.

Custom URL Schemes at App Links

Ang key na CFBundleURLTypes ay nagrerehistro ng mga custom na URL scheme para sa malalalim na link sa app. Ito ay nagpapahintulot sa pagbubukas ng app mula sa browser, email, o iba pang mga app sa pamamagitan ng mga link na may anyong myapp://profile/123. Ang bawat scheme ay natatanging tumutukoy sa app: kung dalawang app ang nagrehistro ng parehong scheme, ang system ay nagpapakita sa gumagamit ng dialog ng pagpili.

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

Para sa suporta ng Universal Links, kinakailangan ang key na com.apple.developer.associated-domains sa file na Entitlements, hindi sa Info.plist. Ang Universal Links ay gumagana lamang kung may naka-configure na file na apple-app-site-association sa server na nag-uugnay ng domain sa app. Hindi tulad ng mga custom na URL scheme, ang Universal Links ay hindi nagpapakita ng dialog ng kumpirmasyon at hindi nagkakasalungatan sa iba pang mga app, dahil gumagamit sila ng mga HTTPS link, hindi mga custom na scheme. Gayunpaman, nangangailangan sila ng domain na may wastong SSL certificate.

Ang mga custom na scheme ay maaaring sumalungat sa mga standard na scheme ng iOS. Inirerekomenda ang paggamit ng mga scheme na may haba na hindi bababa sa 4 na character upang mabawasan ang mga banggaan sa iba pang mga app. Halimbawa, ang scheme na „fb” ay masyadong maikli at maaaring magdulot ng mga salungatan. Mas mainam na gumamit ng reverse notation: myapp:// sa halip na app://. Dapat ding tandaan na kung ang app ay tinanggal ngunit ang ibang app ay nagrehistro ng parehong scheme, ang gumagamit ay maaaring makaranas ng hindi inaasahang pag-uugali kapag nagba-navigate sa pamamagitan ng isang link.

Configuration ng pagsisimula at mga mode ng background

Ang key na UIBackgroundModes ay nagdedeklara ng mga kakayahan sa background ng app. Ang bawat mode ay nangangailangan ng kaukulang paglalarawan sa Info.plist at kumpirmasyon sa capabilities ng Xcode project. Kung walang tinukoy na mode, maaaring puwersahang tapusin ng system ang background task pagkatapos ng 30 segundo o kapag kulang ang mga resources.

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

Ang key na UIApplicationSupportsMultipleScenes ay nagpapagana ng suporta para sa multitasking sa iPad at Mac Catalyst. Kung wala ang key na ito, hindi magagamit ng app ang SwiftUI ScenePhase o UIKit UISceneDelegate para sa pamamahala ng maraming window. Sa iPadOS, ang mga gumagamit ay maaaring magbukas ng maraming window ng parehong app, mag-drag ng nilalaman sa pagitan ng mga ito, at gumamit ng Split View. Kung hindi sinusuportahan ng app ang multi-window mode, ang pagtatakda ng key na ito sa false ay magde-deactivate ng kaukulang functionality.

Ang key na LSRequiresIPhoneOS ay nagbabawal sa pag-install ng app sa iPad. Ginagamit para sa mga iPhone-only na app na hindi sumusuporta sa iPad interface o hindi na-adapt para sa malaking screen. Gayunpaman, hindi inirerekomenda ng Apple ang paggamit ng key na ito nang walang pangangailangan, dahil inaasahan ng mga gumagamit na gagana ang mga app sa lahat ng device na may iOS at iPadOS. Kung ang app ay limitado pa rin sa iPhone, dapat tiyakin na ang kinakailangang ito ay makatwiran sa teknikal at nabanggit sa paglalarawan ng App Store.

Ang key na UIViewControllerBasedStatusBarAppearance ay kumokontrol sa estilo ng status bar. Kung itinakda sa NO, ang estilo ng status bar ay itinatakda nang global sa pamamagitan ng key na UIStatusBarStyle sa Info.plist. Kung YES (default mula noong iOS 7), ang bawat ViewController ay maaaring pamahalaan ang sarili nitong status bar sa pamamagitan ng pag-override sa preferredStatusBarStyle. Para sa mga modernong app, inirerekomenda na iwanan ang YES upang magkaroon ng ibang status bar sa iba't ibang screen, halimbawa maliwanag sa madilim na background at madilim sa maliwanag na background.

Ang key na UIApplicationExitsOnSuspend ay pinipilit ang app na ganap na huminto kapag lumipat sa background mode sa halip na masuspinde. Bihirang gamitin, para lamang sa mga app na may mataas na pangangailangan sa seguridad: mga banking app o app para sa pagtatrabaho sa kumpidensyal na data. Sa kasong ito, nawawalan ang gumagamit ng kakayahang mabilis na bumalik sa app, at ang bawat pagsisimula ay nangyayari mula sa malinis na estado. Maaaring humingi ang App Store ng katwiran para sa paggamit ng key na ito sa panahon ng review.

Ang key na NSAppTransportSecurity ay namamahala sa mga koneksyon sa network ng app. Simula sa iOS 9, ang App Transport Security (ATS) ay humaharang sa lahat ng HTTP na koneksyon bilang default, na nangangailangan ng HTTPS. Para sa pansamantalang pagpayag ng mga HTTP request sa mga partikular na domain, ginagamit ang diksyunaryong NSExceptionDomains sa loob ng NSAppTransportSecurity. Para sa pag-develop, pinapayagan ang kumpletong pag-disable ng ATS sa pamamagitan ng NSAllowsArbitraryLoads = true, ngunit ang Apple ay nangangailangan ng katwiran at hindi pinapayagan ang mga ganitong build nang walang matibay na dahilan. Sa production build, ang ATS ay dapat na naka-enable para sa lahat ng domain na nakikipag-ugnayan sa data ng gumagamit.

Mga madalas itanong

Saan mahahanap ang Info.plist sa Xcode project?

Ang file na Info.plist ay matatagpuan sa folder ng proyekto na may pangalang katulad ng pangalan ng app. Sa Xcode, ito ay ipinapakita sa project navigator sa loob ng grupong Supporting Files na may icon na asul na libro. Maaari rin itong matagpuan sa pamamagitan ng paghahanap sa Spotlight sa proyekto.

Maaari bang i-edit nang manu-mano ang Info.plist?

Oo, ang Info.plist ay maaaring i-edit sa anumang text editor o sa pamamagitan ng graphical interface ng Xcode. Ang manu-manong pag-edit ay nagbibigay ng buong kontrol sa nilalaman, ngunit nangangailangan ng pansin sa XML syntax: bawat pambukas na direktiba na <key> ay dapat may kaukulang </key>, at ang mga uri ng data ay dapat tumugma sa inaasahan ng Apple.

Ano ang Info.plist sa mga proyekto ng SwiftUI?

Sa mga proyekto ng SwiftUI, ang Info.plist ay gumagana nang kapareho sa mga proyekto ng UIKit. Dagdag pa, maaaring kailanganin ang key na UIApplicationSceneManifest para sa pag-configure ng Scene Configuration, kung ang proyekto ay hindi gumagamit ng App protocol para sa pamamahala ng mga scene. Ang SwiftUI App protocol ay awtomatikong bumubuo ng configuration ng scene, ngunit para sa pag-customize ay kinakailangan ang manu-manong pagdaragdag ng mga key.

Paano magdagdag ng custom na key sa Info.plist?

Buksan ang Info.plist sa Xcode, i-click ang plus, at ilagay ang pangalan ng key. Para sa mga custom na key, gamitin ang prefix ng kumpanya upang maiwasan ang mga salungatan sa mga system key ng Apple, halimbawa ITSCustomKey sa halip na CustomKey. Ang uri ng halaga (String, Number, Array, Dictionary) ay pinipili depende sa inaasahang format ng data.

Bakit tinanggihan ng App Store ang build dahil sa Info.plist?

Mga karaniwang dahilan: kawalan ng mga key ng privacy para sa mga hinihinging pahintulot, maling CFBundleIdentifier, hindi pagkakatugma ng bersyon sa Info.plist at App Store Connect, walang laman na halaga ng mga NS key. Suriin ang lahat ng NS key para sa mga ginamit na API at tiyakin na ang bawat paglalarawan ay naglalaman ng makabuluhang paliwanag sa wika ng lokalisasyon ng app.

Buod

  • Info.plist — XML configuration ng iOS/macOS app na may metadata, mga pahintulot, at mga setting ng pagsisimula
  • CFBundleIdentifier at CFBundleVersion — mga mandatoryong key para sa pagtukoy at publikasyon sa App Store
  • Mga key ng privacy (NSCameraUsageDescription) ay mandatory para sa access sa camera, mikropono, at iba pang pribadong API
  • Custom URL schemes ay naka-configure sa pamamagitan ng CFBundleURLTypes, Universal Links sa pamamagitan ng Entitlements at apple-app-site-association
  • UIBackgroundModes ay nagdedeklara ng mga kakayahan sa background ng app para sa tamang paggana sa background
  • Kawalan ng mga mandatoryong key ay humahantong sa crash ng app o pagtanggi ng build sa App Store
  • Pag-edit ng Info.plist ay posible sa pamamagitan ng Xcode interface o text editor na may kontrol ng XML syntax

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din