Application Support — ay isang direktoryo sa sandbox ng iOS application, na nilaan para sa pag-iimbak ng mga pantulong na data na kinakailangan para sa pagpapatakbo ng application, ngunit hindi direktang nilikha ng gumagamit. Ayon sa Apple File System Basics (2024), ang direktoryo na ito ay pinakamainam para sa mga configuration file, SQLite database ng Core Data, mga naka-cache na dokumento, at iba pang data na kusang nabubuo ng application. Hindi tulad ng Documents Directory, ang Application Support ay hindi ipinapakita sa iTunes File Sharing at ang gumagamit ay walang direktang access dito, na pinoprotektahan ang mga data ng serbisyo mula sa aksidenteng pagtanggal.
Mga pangunahing punto
Application Support — ay isang direktoryo sa sandbox ng iOS application, na nilaan para sa pag-iimbak ng data na nilikha at ginagamit ng application para sa pagpapatakbo nito, ngunit hindi mga dokumento ng gumagamit. Ito ang pangunahing lugar para sa mga configuration, database, naka-cache na metadata, at iba pang mga file na pantulong.
Inilalaan ng iOS ang Application Support bilang intermediate na antas sa pagitan ng Documents (data ng gumagamit) at Caches (pansamantalang data). Ang mga file sa Application Support ay maaaring medyo permanente, ngunit ang gumagamit ay hindi dapat magkaroon ng direktang access sa mga ito — ito ang nagpapaiiba nito sa Documents Directory.
Ayon sa Apple Developer Documentation (2024), ang Application Support ay ang inirerekomendang lugar para sa pag-iimbak ng mga SQLite database ng Core Data, Realm file, configuration sa JSON/plist format, mga na-download na reference material, at iba pang data na ginagamit ng application ngunit hindi tahasang nilikha ng gumagamit.
Mahalaga: bilang default, ang Application Support ay kasama sa backup ng iCloud at iTunes. Kung ang application ay nag-iimbak ng malalaking volume ng data na maaaring maibalik sa direktoryo na ito (hal., mga na-download na gabay), kailangang itakda ang flag na isExcludedFromBackup para sa mga kaukulang file.
Sa Swift, ang path sa Application Support Directory ay nakukuha sa pamamagitan ng FileManager.urls(for: .applicationSupportDirectory). Inirerekomenda ng Apple na gumawa ng subdirectory na may pangalan ng application sa loob ng Application Support para sa paghihiwalay ng data.
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Gumawa ng subdirectory ng application
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
Ang Objective-C ay gumagamit ng NSSearchPathForDirectoriesInDomains na may NSApplicationSupportDirectory. Katulad sa Swift, inirerekomenda na gumawa ng subdirectory na may pangalan ng application.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
Sa unang paglunsad, ang direktoryo ng Application Support ay maaaring wala pa — dapat itong likhain gamit ang createDirectory(at:withIntermediateDirectories:). Ito ang nagpapaiiba nito sa Documents Directory na awtomatikong nilikha ng system.
Application Support ay angkop para sa malawak na hanay ng data na ginagamit ng application para sa pagpapatakbo nito. Ang tamang pagpili ng data para sa direktoryo na ito ay nagpapabuti sa organisasyon ng file system at nagpapasimple ng pagba-back up.
Ang mga SQLite file ng Core Data ay nililikha bilang default sa Application Support. Inirerekomenda rin ng Realm na ilagay ang mga database sa direktoryo na ito. Inihihiwalay nito ang mga dokumento ng gumagamit mula sa mga panloob na database ng application.
JSON, plist, XML file na may mga setting ng application, Feature Flags, naka-cache na metadata tungkol sa gumagamit (ngunit hindi mga authentication token — para sa mga iyon ay Keychain).
| Uri ng data | Application Support | Alternatibo |
|---|---|---|
| SQLite Core Data | Oo (default) | — |
| Configuration .plist / .json | Oo | UserDefaults (para sa simple) |
| Na-download na reference material | Oo | Documents (kung para sa gumagamit) |
| Log ng application | May kundisyon | Caches (para sa log) |
| Token ng authentication | Hindi | Keychain |
Pamantayan sa pagpili: kung ang data ay nilikha at ginagamit ng application, hindi ng gumagamit, at dapat panatilihin sa pagitan ng mga paglunsad — ang lugar nila ay sa Application Support.
Core Data — isa sa mga pangunahing konsumidor ng Application Support. Sa paggawa ng NSPersistentContainer, awtomatikong naglalagay ang Core Data ng mga SQLite file sa Library/Application Support na may kakaibang pangalan batay sa pangalan ng modelo.
Ang pag-unawa kung saan iniimbak ng Core Data ang mga file ay kritikal para sa migrasyon, pagba-back up, at pagde-debug. Mga pangunahing file: .sqlite (data), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).
import CoreData
// Gumawa ng lalagyan ng Core Data
let container = NSPersistentContainer(name: "MyAppModel")
// Custom na direktoryo ng URL ng tindahan
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]
Kapag gumagamit ng CloudKit synchronization para sa Core Data, ang SQLite file ay nananatili sa Application Support, at ang CloudKit ay ginagamit bilang transport layer. Sa kasong ito, mahalaga na huwag ibukod ang mga file mula sa backup — kung hindi, ang synchronization sa pagitan ng mga device ay maaaring maapektuhan.
Ang pagkakaiba sa pagitan ng Application Support at Documents — isa sa pinakamahalaga para sa tamang organisasyon ng istraktura ng file ng iOS application. Ang maling pagpili ay maaaring humantong sa aksidenteng pagtanggal ng mahalagang data ng application ng gumagamit o, kabaligtaran, sa hindi paghahanap ng kanilang sariling mga file.
| Parameter | Application Support | Documents Directory |
|---|---|---|
| Access ng gumagamit | Hindi (nakatago) | Sa pamamagitan ng iTunes File Sharing |
| Uri ng data | Data ng serbisyo ng application | Mga dokumento ng gumagamit |
| Backup ng iCloud | Oo (default) | Oo (default) |
| Panganib ng pagtanggal | Mababa (walang access) | Katamtaman (accessible sa gumagamit) |
| Halimbawa | SQLite Core Data | Ini-export na PDF |
Simpleng patakaran: kung ang gumagamit ay dapat makakita ng file at matanggal ito — gamitin ang Documents. Kung ang file ay kailangan ng application para sa pagpapatakbo ngunit ang gumagamit ay hindi kailangang malaman tungkol dito — gamitin ang Application Support. Kung ang data ay maaaring maibalik — gamitin ang Caches.
Ang pagtatrabaho sa Application Support ay nangangailangan ng pagsasaalang-alang sa ilang mga katangian na nagpapaiiba nito mula sa iba pang mga direktoryo sa sandbox. Ang pagsunod sa mga kasanayang ito ay tumutulong na maiwasan ang pagkawala ng data, mga problema sa migrasyon, at hindi inaasahang pag-uugali ng application.
Hindi tulad ng Documents, ang Application Support ay maaaring wala sa unang paglunsad. Gamitin ang createDirectory(at:withIntermediateDirectories:) na may parameter na withIntermediateDirectories: true upang garantiyahan ang paggawa ng buong chain ng mga subdirectory.
Gumawa ng subdirectory na may Bundle Identifier sa loob ng Application Support. Inihihiwalay nito ang data ng iyong application mula sa data ng iba pang mga application (kahit na ang sandbox ay nagbibigay na ng paghihiwalay) at pinapasimple ang migrasyon sa pagbabago ng provider.
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
}
}
Ang pagsunod sa mga kasanayang ito ay naggarantiyang ang data ng serbisyo ng application ay maayos na nakaorganisa, protektado mula sa aksidenteng pagtanggal ng gumagamit, at tama na naibabalik mula sa mga backup.
Mga madalas itanong
Oo, ang Application Support ay hindi awtomatikong nililikha sa pag-install ng application. Hindi tulad ng Documents at Caches na nililikha ng system sa unang paglunsad, ang Application Support ay dapat gawin ng developer gamit ang FileManager.createDirectory(at:withIntermediateDirectories:). Ito ay karaniwang ginagawa sa paraang application(_:didFinishLaunchingWithOptions:).
Hindi, sa pamamagitan ng standard na iOS interface (Files, iTunes) ang gumagamit ay walang access sa Application Support. Gayunpaman, sa pagtanggal ng application mismo, ang buong sandbox, kasama ang Application Support, ay ganap na natatanggal. Ang backup sa iCloud ay nananatili hanggang sa pagpapanumbalik o manu-manong pagtanggal.
Para sa mga na-download na video na nilaan para sa gumagamit, mas mainam na gamitin ang Documents Directory — upang ang gumagamit ay mamahala ng mga file na ito sa pamamagitan ng Files. Kung ang video ay bahagi ng panloob na cache ng application (hal., offline na nilalaman para sa pag-aaral), maaaring gamitin ang Application Support na may flag na isExcludedFromBackup para sa malalaking file.
Magdagdag ng pag-ve-version ng mga subdirectory sa loob ng Application Support. Sa pag-update, suriin ang kasalukuyang bersyon ng data at kung kinakailangan, gumawa ng bagong subdirectory, panatilihin ang luma para sa rollback. Tanggalin ang lumang direktoryo pagkatapos lamang ng kumpirmasyon na ang lahat ng gumagamit ay matagumpay na nag-migrate sa bagong bersyon ng data.
Hindi direkta — oo. Kung ang Application Support ay naglalaman ng sampu-sampung libong maliliit na file, ang FileManager.enumerator ay maaaring magpabagal sa pagsisimula. Inirerekomenda na limitahan ang bilang ng mga file sa Application Support (hindi hihigit sa 1000) at gumamit ng mga database (Core Data, Realm) sa halip na maraming indibidwal na file para sa structured na data.
Buod
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.
Basahin din