Info.plist: nədir, məcburi açarlar və işə salma parametrləri

Müəllif: IT Sectr Dərc olunub: 2026-05-31 Oxuma vaxtı: 8 dəq

Info.plist — iOS və macOS tətbiqlərinin konfiqurasiya faylı olan XML, metadata, icazələr və işə salma parametrlərini ehtiva edir. Tətbiq kodu işə salınmazdan əvvəl sistem tərəfindən emal edilir. Apple Developer, 2025-ə görə, düzgün konfiqurasiya edilməmiş Info.plist olmadan tətbiq App Store baxışından keçmir. Info.plist paket identifikatorunu, qurma versiyasını, tələb olunan icazələri və dəstəklənən ekran oriyentasiyalarını müəyyən edir.

Əsas məlumatlar

  • Info.plist — iOS/macOS tətbiqinin plist formatında konfiqurasiya açarları olan XML lüğəti
  • Bundle identifier — imzalama və xidmətlər üçün Apple ekosistemində tətbiqin unikal identifikatoru
  • Gizlilik açarları (NSCameraUsageDescription) kameraya, mikrofon və geolokasiyaya giriş üçün məcburlidir
  • Custom URL schemes dərin keçidlər üçün CFBundleURLTypes açarı ilə konfiqurasiya edilir
  • UIRequiredDeviceCapabilities App Store-dan quraşdırma üçün cihazın minimum tələblərini təyin edir

Info.plist nədir

Info.plist, property list şəklində açar-dəyər cütlərini ehtiva edən XML formatında dict kök elementi olan fayldır. Tətbiq paketinin içərisində yerləşir və hər işə salınmada kod icra olunmazdan əvvəl sistem tərəfindən oxunur. Plist formatı sətirləri, rəqəmləri, massivləri, lüğətləri, tarixləri və boolean dəyərləri dəstəkləyir ki, bu da mürəkkəb konfiqurasiyaları təsvir etməyə imkan verir.

Apple Info.plist-dən tətbiqin kimliyini, imkanlarını və tələblərini müəyyən etmək üçün istifadə edir. Bəzi açarların dəyişdirilməsi paketin yenidən qurulmasını tələb edir, çünki onlar qurma yüklənərkən App Store tərəfindən yoxlanılan metadatalara təsir edir. Məsələn, nəşrdən sonra CFBundleVersion və ya CFBundleIdentifier dəyişdirilməsi tətbiq yeniləmə prosesini poza bilər, çünki App Store Connect versiyaları identifikasiya etmək üçün bu dəyərlərdən istifadə edir.

Əsas açarlar Xcode-da layihə yaradılarkən avtomatik yaradılır, lakin əksər parametrlər tətbiq funksionallığı inkişaf etdikcə əl ilə əlavə edilir. Xcode standart açarlar üçün açılan siyahıları olan qrafik Info.plist redaktoru təqdim edir ki, bu da səhv yazma riskini azaldır. Bununla belə, Scene Manifest və ya Background Modes kimi mürəkkəb konfiqurasiyalar üçün mənbə XML-ni birbaşa redaktə etmək tövsiyə olunur.

Məcburi Info.plist açarları

Bəzi Info.plist açarları App Store-da nəşr üçün məcburidir. Onların olmaması yoxlama mərhələsində qurmanın rədd edilməsinə səbəb olur. Apple Xcode Organizer və ya Transporter vasitəsilə arxiv yüklənərkən bu açarları avtomatik yoxlayır. Tərtibatçı baxışa göndərməzdən əvvəl bütün məcburi sahələrin düzgün doldurulduğuna əmin olmalıdır.

Paket identifikatorları

CFBundleIdentifier açarı tətbiqin unikal identifikatorunu tərs domen qeydində (com.shirkət.tətbiq) təyin edir. O, kod imzalanması, Push bildirişləri, CloudKit, App Groups və bir çox digər Apple xidmətləri üçün istifadə olunur. Nəşrdən sonra identifikatorun dəyişdirilməsi App Store tərəfindən yeni tətbiq kimi qəbul edilir və mövcud istifadəçilər yeniləmə almır. Buna görə identifikator tətbiqin bütün həyat dövrü ərzində dəyişməz olmalıdır.

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

Tətbiq versiyası

CFBundleShortVersionString (göstərilən versiya) və CFBundleVersion (qurma nömrəsi) açarları App Store Connect və sistem tərəfindən yeniləmələri idarə etmək üçün istifadə olunur. Versiya major.minor.patch formatında göstərilir. Qurma nömrəsi App Store Connect-ə yüklənən hər qurma ilə artmalıdır, hətta tətbiq versiyası dəyişməsə belə. Apple CFBundleVersion-dan qurmanın yeni və ya artıq yüklənmişin dublikatı olduğunu müəyyən etmək üçün istifadə edir. Qurma nömrəsi əvvəllər yüklənmiş ilə üst-üstə düşərsə, ITMS-90161 xətası verilir.

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

Dəstəklənən interfeys oriyentasiyaları

UISupportedInterfaceOrientations açarları iPhone üçün dəstəklənən ekran oriyentasiyalarını müəyyən edir. iPad üçün cihaz suffiksi ilə ayrıca UISupportedInterfaceOrientations~ipad açarı istifadə olunur. Hər oriyentasiya sətirlə təyin edilir: UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight, UIInterfaceOrientationPortraitUpsideDown. Tətbiq yalnız portret oriyentasiyasını dəstəkləyirsə, App Store qurmanı rədd edəcək, əgər o yalnız iPhone üçün deyilsə və iPad üçün yalnız portret göstərilibsə.

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

İcazələr və gizlilik açarları

iOS 10-dan başlayaraq, Apple hər tələb olunan icazənin təsvirini NS (NeXTStep) prefiksli açarlar vasitəsilə tələb edir. Təsvir özəl API-lərə ilk giriş sorğusunda istifadəçiyə sistem dialoqunda göstərilir. İcazə tələb edən API çağırarkən müvafiq NS açarının olmaması tətbiqin dərhal xəta ilə dayandırılmasına səbəb olur ki, bu da yalnız crash-loglarda qeydə alınır.

AçarTəyinat
NSCameraUsageDescriptionŞəkil və video üçün kameraya giriş
NSPhotoLibraryUsageDescriptionŞəkil kitabxanasına giriş
NSLocationWhenInUseUsageDescriptionAktiv istifadə zamanı geolokasiya
NSMicrophoneUsageDescriptionSəs yazmaq üçün mikrofon girişi
NSContactsUsageDescriptionCihaz kontaktlarına giriş

Hər gizlilik açarı sorğunun səbəbinin istifadəçi üçün başa düşülən təsvirini ehtiva etməlidir. Boş və ya şablon mətnlər, məsələn “Tətbiqin işləməsi üçün” və ya “Giriş tələb olunur”, App Store tərəfindən rədd edilməyə səbəb olur. Təsvir konkret funksionallığı izah etməlidir: “Kamera girişi QR kodlarını skan etmək və profil şəkilləri yaratmaq üçün lazımdır”. Hər dəstəklənən dil üçün InfoPlist.strings faylları vasitəsilə lokallaşdırılmış təsvir versiyalarından istifadə etmək tövsiyə olunur.

Özəl məlumatlara girişi olan API çağırarkən lazımi NS açarının olmaması tətbiqin çökməsinə səbəb olur. Sistem prosesi xəta ilə dayandırır ki, bu da yalnız Xcode və ya Firebase Crashlytics-dən crash hesabatlarının loqlarında görünür. İstifadəçi heç bir izahat olmadan yalnız tətbiqin qəfil bağlanmasını görür. Buna görə kameradan, mikrofondan və ya geolokasiyadan istifadə edən yeni funksionallıq əlavə etməzdən əvvəl əvvəlcə Info.plist-də müvafiq gizlilik açarını əlavə etməli, sonra API çağırışını tətbiq etməlisiniz.

Custom URL Schemes və App Links

CFBundleURLTypes açarı tətbiqdə dərin keçidlər üçün xüsusi URL sxemlərini qeydiyyatdan keçirir. Bu, tətbiqi brauzerdən, e-poçtdan və ya digər tətbiqlərdən tətbiqim://profil/123 kimi keçidlər vasitəsilə açmağa imkan verir. Hər sxem tətbiqi unikal şəkildə identifikasiya edir: iki tətbiq eyni sxemi qeydiyyatdan keçirərsə, sistem istifadəçiyə hansını istifadə edəcəyini seçmək üçün dialoq göstərir.

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

Universal Links-i dəstəkləmək üçün Entitlements faylında com.apple.developer.associated-domains açarı tələb olunur, Info.plist-də deyil. Universal Links yalnız serverdə domeni tətbiqlə birləşdirən apple-app-site-association faylı konfiqurasiya edildikdə işləyir. Xüsusi URL sxemlərindən fərqli olaraq, Universal Links təsdiq dialoqu göstərmir və digər tətbiqlərlə ziddiyyət təşkil etmir, çünki xüsusi sxemlər deyil, HTTPS keçidləri istifadə olunur. Bununla belə, onlar etibarlı SSL sertifikatı olan domen tələb edir.

Xüsusi sxemlər iOS-un standart sxemləri ilə ziddiyyət təşkil edə bilər. Digər tətbiqlərlə toqquşmaları minimuma endirmək üçün ən azı 4 simvol uzunluğunda sxemlərdən istifadə etmək tövsiyə olunur. Məsələn, „fb” sxemi çox qısadır və ziddiyyət yarada bilər. Tərs qeyddən istifadə etmək daha yaxşıdır: tətbiqim:// əvəzinə tətbiq://. Həmçinin xatırlamaq lazımdır ki, tətbiq silinsə, lakin başqa tətbiq eyni sxemi qeydiyyatdan keçirərsə, istifadəçi keçidə daxil olarkən gözlənilməz davranışla qarşılaşa bilər.

İşə salma konfiqurasiyası və fon rejimləri

UIBackgroundModes açarı tətbiqin fon imkanlarını bəyan edir. Hər rejim Info.plist-də müvafiq təsvir və Xcode layihəsinin capabilities bölməsində təsdiq tələb edir. Rejim göstərilmədikdə, sistem fon tapşırığını 30 saniyədən sonra və ya resurs çatışmazlığında məcburi dayandıra bilər.

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

UIApplicationSupportsMultipleScenes açarı iPad və Mac Catalyst-də çoxtapşırıqlılıq dəstəyini aktivləşdirir. Bu açar olmadan tətbiq çoxlu pəncərələri idarə etmək üçün SwiftUI ScenePhase və ya UIKit UISceneDelegate istifadə edə bilməz. iPadOS-da istifadəçilər bir tətbiqin çoxlu pəncərələrini aça, aralarında məzmun dartıya və Split View-dən istifadə edə bilər. Tətbiq çoxpəncərəli rejimi dəstəkləmirsə, bu açarı false olaraq təyin etmək müvafiq funksionallığı söndürür.

LSRequiresIPhoneOS açarı tətbiqin iPad-də quraşdırılmasını qadağan edir. iPad interfeysini dəstəkləməyən və ya böyük ekrana uyğunlaşdırılmamış yalnız iPhone üçün tətbiqlərdə istifadə olunur. Bununla belə, Apple bu açardan zərurət olmadan istifadə etməyi tövsiyə etmir, çünki istifadəçilər tətbiqlərin iOS və iPadOS ilə bütün cihazlarda işləyəcəyini gözləyirlər. Tətbiq yenə də iPhone ilə məhdudlaşırsa, bu tələbin texniki cəhətdən əsaslandırıldığına və App Store təsvirində göstərildiyinə əmin olun.

UIViewControllerBasedStatusBarAppearance açarı status zolağının üslubunu idarə edir. NO olaraq təyin edilərsə, status zolağının üslubu Info.plist-də UIStatusBarStyle açarı vasitəsilə qlobal olaraq təyin edilir. YES olarsa (iOS 7-dən etibarən defolt), hər ViewController preferredStatusBarStyle-i ləğv edərək öz status zolağını idarə edə bilər. Müasir tətbiqlər üçün YES buraxmaq tövsiyə olunur ki, müxtəlif ekranlarda fərqli status zolağı olsun, məsələn tünd fonda açıq və açıq fonda tünd.

UIApplicationExitsOnSuspend açarı tətbiqi fon rejiminə keçərkən dayandırmaq əvəzinə tamamilə bağlamağa məcbur edir. Yalnız yüksək təhlükəsizlik tələbləri olan tətbiqlər üçün nadir hallarda istifadə olunur: bank tətbiqləri və ya məxfi məlumatlarla işləyən tətbiqlər. Bu halda istifadəçi tətbiqə tez qayıtmaq imkanını itirir və hər işə salma təmiz vəziyyətdən baş verir. App Store baxış zamanı bu açardan istifadənin əsaslandırılmasını tələb edə bilər.

NSAppTransportSecurity açarı tətbiqin şəbəkə bağlantılarını idarə edir. iOS 9-dan başlayaraq, App Transport Security (ATS) HTTPS tələb edərək bütün HTTP bağlantılarını defolt olaraq bloklayır. Müəyyən domenlərə HTTP sorğularına müvəqqəti icazə vermək üçün NSAppTransportSecurity daxilində NSExceptionDomains lüğəti istifadə olunur. İnkişaf üçün ATS-ni NSAllowsArbitraryLoads = true vasitəsilə tamamilə söndürmək icazəlidir, lakin Apple əsaslandırma tələb edir və belə qurmaları ciddi səbəb olmadan buraxmır. İstehsal qurmasında ATS istifadəçi məlumatları ilə işləyən bütün domenlər üçün aktiv olmalıdır.

Tez-tez verilən suallar

Xcode layihəsində Info.plist harada yerləşir?

Info.plist faylı tətbiqin adı ilə üst-üstə düşən layihə qovluğunda yerləşir. Xcode-da o, Supporting Files qrupu daxilində layihə naviqatorunda mavi kitab ikonu ilə göstərilir. Həmçinin layihə üzrə Spotlight axtarışı vasitəsilə tapıla bilər.

Info.plist-i əl ilə redaktə etmək olarmı?

Bəli, Info.plist istənilən mətn redaktorunda və ya Xcode-un qrafik interfeysi vasitəsilə redaktə edilə bilər. Əl ilə redaktə məzmun üzərində tam nəzarət verir, lakin XML sintaksisinə diqqət tələb edir: hər açılan <key> direktivi müvafiq </key> ilə bağlanmalı və məlumat növləri Apple-ın gözləntilərinə uyğun olmalıdır.

SwiftUI layihələrində Info.plist nədir?

SwiftUI layihələrində Info.plist UIKit layihələri ilə eyni şəkildə işləyir. Əlavə olaraq, layihə səhnələri idarə etmək üçün App protokolundan istifadə etmirsə, Scene Configuration-ni konfiqurasiya etmək üçün UIApplicationSceneManifest açarı tələb oluna bilər. SwiftUI App protocol avtomatik olaraq səhnə konfiqurasiyası yaradır, lakin fərdiləşdirmə üçün açarların əl ilə əlavə edilməsi tələb olunur.

Info.plist-ə xüsusi açarı necə əlavə etməli?

Info.plist-i Xcode-da açın, artı işarəsini vurun və açarın adını daxil edin. Xüsusi açarlar üçün Apple-ın sistem açarları ilə toqquşmaların qarşısını almaq üçün şirkət prefiksindən istifadə edin, məsələn CustomKey əvəzinə ITSCustomKey. Dəyər növü (String, Number, Array, Dictionary) gözlənilən məlumat formatından asılı olaraq seçilir.

App Store Info.plist-ə görə qurmanı niyə rədd etdi?

Tipik səbəblər: tələb olunan icazələr üçün gizlilik açarlarının olmaması, səhv CFBundleIdentifier, Info.plist və App Store Connect-də versiyaların uyğunsuzluğu, NS açarlarının boş dəyərləri. İstifadə olunan API-lər üçün bütün NS açarlarını yoxlayın və hər təsvirin tətbiqin lokallaşdırma dilində mənalı izahat ehtiva etdiyinə əmin olun.

Xülasə

  • Info.plist — metadata, icazələr və işə salma parametrləri olan iOS/macOS tətbiqinin XML konfiqurasiyası
  • CFBundleIdentifier və CFBundleVersion — App Store-da identifikasiya və nəşr üçün məcburi açarlar
  • Gizlilik açarları (NSCameraUsageDescription) kameraya, mikrofon və digər özəl API-lərə giriş üçün məcburidir
  • Custom URL schemes CFBundleURLTypes vasitəsilə, Universal Links Entitlements və apple-app-site-association vasitəsilə konfiqurasiya edilir
  • UIBackgroundModes fonda düzgün işləmək üçün tətbiqin fon imkanlarını bəyan edir
  • Məcburi açarların olmaması tətbiqin çökməsinə və ya App Store qurmasının rədd edilməsinə səbəb olur
  • Redaktə Info.plist Xcode interfeysi və ya XML sintaksisi nəzarəti ilə mətn redaktoru vasitəsilə mümkündür

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun