Application Support: bu nədir, konfiqurasiyaların saxlanması və Core Data

Müəllif: IT Sectr Dərc olunub: 2026-07-10 Oxuma vaxtı: 10 dəq

Application Support — iOS proqramının sandbox-unda yardımçı məlumatların saxlanması üçün nəzərdə tutulmuş kataloqdur. Bu məlumatlar proqramın işləməsi üçün zəruridir, lakin birbaşa istifadəçi tərəfindən yaradılmır. Apple File System Basics (2024) məlumatına görə, bu kataloq konfiqurasiya faylları, Core Data SQLite verilənlər bazaları, keşlənmiş sənədlər və proqramın müstəqil yaratdığı digər məlumatlar üçün optimaldır. Documents Directory-dən fərqli olaraq, Application Support iTunes File Sharing-də göstərilmir və istifadəçinin ona birbaşa girişi yoxdur, bu da yardımçı məlumatları təsadüfi silinmədən qoruyur.

Əsas məqamlar

  • Application Support — proqramın öz işi üçün yaratdığı, istifadəçi üçün nəzərdə tutulmayan məlumatlar üçün kataloq.
  • Application Support faylları, istisna bayrağı qurulmayıbsa, avtomatik olaraq iCloud və iTunes-da ehtiyat nüsxələnir.
  • Kataloq yolu — NSApplicationSupportDirectory və ya FileManager.urls(for: .applicationSupportDirectory).
  • Core Data susmaya görə SQLite verilənlər bazalarını Application Support-da yerləşdirir.
  • İstifadəçinin Files və ya iTunes vasitəsilə Application Support-a birbaşa girişi yoxdur.

iOS-da Application Support nədir?

Application Support — iOS proqramının sandbox-unda, proqramın öz işi üçün yaratdığı və istifadə etdiyi, lakin istifadəçi sənədləri olmayan məlumatların saxlanması üçün kataloqdur. Bu, konfiqurasiyalar, verilənlər bazaları, keşlənmiş metadatalar və digər yardımçı fayllar üçün əsas yerdir.

iOS Application Support-u Documents (istifadəçi məlumatları) və Caches (müvəqqəti məlumatlar) arasında aralıq səviyyə kimi ayırır. Application Support-dakı fayllar nisbətən qalıcı ola bilər, lakin istifadəçinin onlara birbaşa girişi olmamalıdır — bu, onu Documents Directory-dən fərqləndirir.

Apple Developer Documentation (2024) məlumatına görə, Application Support Core Data SQLite verilənlər bazaları, Realm faylları, JSON/plist formatında konfiqurasiyalar, yüklənmiş istinad materialları və proqramın istifadə etdiyi, lakin istifadəçinin açıq şəkildə yaratmadığı digər məlumatlar üçün tövsiyə olunan yerdir.

Vacibdir: susmaya görə Application Support iCloud və iTunes ehtiyat nüsxələnməsinə daxildir. Əgər proqram bu kataloqda bərpa oluna bilən böyük həcmli məlumatlar saxlayırsa (məsələn, yüklənmiş təlimatlar), müvafiq fayllar üçün isExcludedFromBackup bayrağı qurulmalıdır.

Application Support yolunu necə əldə etmək olar

Swift-də Application Support Directory yoluna FileManager.urls(for: .applicationSupportDirectory) vasitəsilə əldə edilir. Apple məlumatların izolyasiyası üçün Application Support daxilində proqram adı ilə altkataloq yaratmağı tövsiyə edir.

swift
import Foundation

let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
    for: .applicationSupportDirectory,
    in: .userDomainMask
).first else { return }

// Proqram altkataloqunu yaradın
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
    at: appDir,
    withIntermediateDirectories: true
)

Objective-C NSSearchPathForDirectoriesInDomains istifadə edir NSApplicationSupportDirectory ilə. Swift-də olduğu kimi, proqram adı ilə altkataloq yaratmaq tövsiyə olunur.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSApplicationSupportDirectory,
    NSUserDomainMask,
    YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];

İlk işə salınmada Application Support kataloqu mövcud olmaya bilər — onu createDirectory(at:withIntermediateDirectories:) istifadə edərək yaratmaq lazımdır. Bu, sistem tərəfindən avtomatik yaradılan Documents Directory-dən fərqlənir.

Application Support-da hansı məlumatları saxlamaq lazımdır

Application Support proqramın öz işi üçün istifadə etdiyi geniş spektrli məlumatlar üçün uyğundur. Bu kataloq üçün düzgün məlumat seçimi fayl sisteminin təşkilini yaxşılaşdırır və ehtiyat nüsxələnməni asanlaşdırır.

Core Data və Realm verilənlər bazaları

SQLite faylları Core Data susmaya görə Application Support-da yaradılır. Realm də verilənlər bazalarını bu kataloqda yerləşdirməyi tövsiyə edir. Bu, istifadəçi sənədlərini proqramın daxili verilənlər bazalarından təcrid edir.

Konfiqurasiya faylları

JSON, plist, proqram parametrləri olan XML faylları, Feature Flags, istifadəçi haqqında keşlənmiş metadatalar (lakin autentifikasiya tokenləri yox — onlar üçün Keychain).

Məlumat növüApplication SupportAlternativ
SQLite Core DataBəli (susmaya görə)
Konfiqurasiyalar .plist / .jsonBəliUserDefaults (sadə olanlar üçün)
Yüklənmiş istinad materiallarıBəliDocuments (istifadəçi üçünsə)
Proqram jurnallarıŞərtiCaches (jurnallar üçün)
Autentifikasiya tokenləriXeyrKeychain

Seçim meyarı: məlumatlar proqram tərəfindən yaradılır və istifadə olunursa, istifadəçi tərəfindən deyil, və işə salmalar arasında saxlanmalıdırsa — onların yeri Application Support-dadır.

Core Data və Application Support

Core Data — Application Support-un əsas istehlakçılarından biridir. NSPersistentContainer yaradılarkən Core Data avtomatik olaraq SQLite fayllarını Library/Application Support-da model adına əsaslanan unikal adla yerləşdirir.

Core Data-nın faylları harada saxladığını başa düşmək miqrasiyalar, ehtiyat nüsxələnmə və debug üçün kritik əhəmiyyətlidir. Əsas fayllar: .sqlite (məlumatlar), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).

swift
import CoreData

// Core Data konteynerini yaradın
let container = NSPersistentContainer(name: "MyAppModel")

// Xüsusi mağaza URL kataloqu
guard let appSupportURL = FileManager.default
    .urls(for: .applicationSupportDirectory,
        in: .userDomainMask).first else { return }

let storeURL = appSupportURL
    .appendingPathComponent("MyAppModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]

CloudKit sinxronizasiyasından istifadə edərkən Core Data, SQLite faylı Application Support-da qalır, CloudKit isə nəqliyyat təbəqəsi kimi istifadə olunur. Bu halda faylları ehtiyat nüsxədən çıxarmamaq vacibdir — əks halda cihazlar arasında sinxronizasiya pozula bilər.

Application Support vs Documents Directory

Application SupportDocuments arasındakı fərq iOS proqramının fayl strukturunun düzgün təşkili üçün ən vacib məqamlardan biridir. Səhv seçim istifadəçinin təsadüfən vacib məlumatları silməsinə və ya əksinə, öz fayllarını tapa bilməməsinə səbəb ola bilər.

ParametrApplication SupportDocuments Directory
İstifadəçi girişiXeyr (gizlidir)İTunes File Sharing vasitəsilə
Məlumat növüProqramın yardımçı məlumatlarıİstifadəçi sənədləri
iCloud ehtiyat nüsxəsiBəli (susmaya görə)Bəli (susmaya görə)
Silinmə riskiAşağı (giriş yoxdur)Orta (istifadəçi üçün əlçatandır)
NümunəSQLite Core Dataİxrac edilmiş PDF

Sadə qayda: istifadəçi faylı görməli və silə bilməlidirsə — Documents istifadə edin. Fayl proqramın işləməsi üçün lazımdırsa, lakin istifadəçi onun haqqında bilməməlidirsə — Application Support istifadə edin. Məlumatlar bərpa oluna bilirsə — Caches istifadə edin.

Application Support ilə işin ən yaxşı təcrübələri

Application Support ilə iş sandbox-ın digər kataloqlarından fərqləndirən bir neçə xüsusiyyətin nəzərə alınmasını tələb edir. Bu təcrübələrə riayət etmək məlumat itkisinin, miqrasiya problemlərinin və proqramın gözlənilməz davranışının qarşısını almağa kömək edir.

İlk işə salınmada həmişə kataloqu yaradın

Documents-dən fərqli olaraq, Application Support ilk işə salınmada mövcud olmaya bilər. Bütün altkataloqlar zəncirinin yaradılmasını təmin etmək üçün createDirectory(at:withIntermediateDirectories:) parametr ilə withIntermediateDirectories: true istifadə edin.

Bundle Identifier ilə altkataloqdan istifadə edin

Application Support daxilində Bundle Identifier ilə altkataloq yaradın. Bu, proqramınızın məlumatlarını digər proqramların məlumatlarından təcrid edir (sandbox artıq izolyasiyanı təmin etsə də) və təchizatçı dəyişikliyində miqrasiyanı asanlaşdırır.

swift
import Foundation

enum AppSupport {
    static func ensureDirectory() throws -> URL {
        let fm = FileManager.default
        let baseURL = try fm.url(
            for: .applicationSupportDirectory,
            in: .userDomainMask,
            appropriateFor: nil,
            create: true
        )
        let appDir = baseURL
            .appendingPathComponent(Bundle.main.bundleIdentifier ?? "default")
        try fm.createDirectory(at: appDir, withIntermediateDirectories: true)
        return appDir
    }
}

Bu təcrübələrə riayət etmək, proqramın yardımçı məlumatlarının düzgün təşkil olunmasını, istifadəçi tərəfindən təsadüfi silinmədən qorunmasını və ehtiyat nüsxələrdən düzgün bərpa olunmasını təmin edir.

Tez-tez verilən suallar

Application Support Directory-ni əl ilə yaratmaq lazımdırmı?

Bəli, Application Support proqramın quraşdırılması zamanı avtomatik yaradılmır. Documents və Caches-dən fərqli olaraq, sistem onları ilk işə salınmada yaradır, Application Support isə proqramçı tərəfindən FileManager.createDirectory(at:withIntermediateDirectories:) istifadə edərək yaradılmalıdır. Bu, adətən application(_:didFinishLaunchingWithOptions:) metodunda edilir.

İstifadəçi təsadüfən Application Support-dakı məlumatları silə bilərmi?

Yox, standart iOS interfeysi (Files, iTunes) vasitəsilə istifadəçinin Application Support-a girişi yoxdur. Lakin proqramın özü silindikdə, bütün sandbox, o cümlədən Application Support tamamilə silinir. iCloud-dakı ehtiyat nüsxə bərpa vaxtına və ya əl ilə silinməyə qədər saxlanılır.

Application Support yüklənmiş videoları saxlamaq üçün uyğundurmu?

İstifadəçi üçün nəzərdə tutulmuş yüklənmiş videolar üçün Documents Directory-dən istifadə etmək daha yaxşıdır — istifadəçi bu faylları Files vasitəsilə idarə edə bilsin. Video proqramın daxili keşinin bir hissəsidirsə (məsələn, offline təlim məzmunu), böyük fayllar üçün isExcludedFromBackup bayrağı ilə Application Support istifadə edilə bilər.

Proqram yenilənməsində Application Support məlumatlarını necə miqrasiya etmək olar?

Application Support daxilində altkataloqların versiyalaşdırılmasını əlavə edin. Yeniləmə zamanı cari məlumat versiyasını yoxlayın və lazım olduqda yeni altkataloq yaradın, köhnəni isə rollback üçün saxlayın. Köhnə kataloqu yalnız bütün istifadəçilərin yeni məlumat versiyasına uğurla keçdiyini təsdiqlədikdən sonra silin.

Application Support-un ölçüsü proqramın işə salınma sürətinə təsir edirmi?

Dolayı yolla — bəli. Əgər Application Support on minlərlə kiçik fayl ehtiva edirsə, FileManager.enumerator başlatma zamanı yavaşlaya bilər. Application Support-da faylların sayını məhdudlaşdırmaq (1000-dən çox olmamaq) və strukturlu məlumatlar üçün çoxsaylı ayrı-ayrı fayllar əvəzinə verilənlər bazalarından (Core Data, Realm) istifadə etmək tövsiyə olunur.

Xülasə

  • Application Support — istifadəçinin birbaşa girişi üçün nəzərdə tutulmayan proqramın yardımçı məlumatları üçün kataloq.
  • Kataloq yolu — FileManager.urls(for: .applicationSupportDirectory) və ya NSSearchPathForDirectoriesInDomains NSApplicationSupportDirectory ilə.
  • Kataloqu proqramın ilk işə salınmasında əl ilə yaratmaq lazımdır.
  • Core Data susmaya görə SQLite verilənlər bazalarını Application Support-da yerləşdirir.
  • İstifadəçinin Files və ya iTunes vasitəsilə Application Support-a girişi yoxdur.
  • Application Support faylları, isExcludedFromBackup qurulmayıbsa, iCloud-da ehtiyat nüsxələnir.
  • Məlumatların izolyasiyası və miqrasiyanın asanlaşdırılması üçün Bundle Identifier ilə altkataloq yaradın.

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