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 — 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.
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.
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.
@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 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.
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.
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 Support | Alternativ |
|---|---|---|
| SQLite Core Data | Bəli (susmaya görə) | — |
| Konfiqurasiyalar .plist / .json | Bəli | UserDefaults (sadə olanlar üçün) |
| Yüklənmiş istinad materialları | Bəli | Documents (istifadəçi üçünsə) |
| Proqram jurnalları | Şərti | Caches (jurnallar üçün) |
| Autentifikasiya tokenləri | Xeyr | Keychain |
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 — 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).
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 və Documents 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.
| Parametr | Application Support | Documents Directory |
|---|---|---|
| İstifadəçi girişi | Xeyr (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əsi | Bəli (susmaya görə) | Bəli (susmaya görə) |
| Silinmə riski | Aş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ş 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.
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.
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.
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
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.
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.
İ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.
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.
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ə
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.
Həm də oxuyun