Application Support iOS ایپ سینڈ باکس میں ایک ڈائرکٹری ہے جو ایپ کے کام کرنے کے لیے ضروری معاون ڈیٹا کو ذخیرہ کرنے کے لیے ڈیزائن کی گئی ہے، لیکن صارف کے ذریعے براہ راست نہیں بنائی گئی۔ Apple File System Basics (2024) کے مطابق، یہ ڈائرکٹری کنفیگریشن فائلوں، Core Data SQLite ڈیٹا بیسز، کیش شدہ دستاویزات اور دیگر ڈیٹا کے لیے بہترین ہے جو ایپ خود پیدا کرتی ہے۔ Documents Directory کے برعکس، Application Support iTunes File Sharing میں ظاہر نہیں ہوتا اور صارف کی اس تک براہ راست رسائی نہیں ہے، جو سروس ڈیٹا کو حادثاتی طور پر حذف ہونے سے بچاتا ہے۔
اہم نکات
Application Support iOS ایپ سینڈ باکس میں ایک ڈائرکٹری ہے جو ایپ کے اپنے کام کے لیے بنائے اور استعمال کرنے والے ڈیٹا کو ذخیرہ کرنے کے لیے ڈیزائن کی گئی ہے، لیکن جو صارف کی دستاویزات نہیں ہے۔ یہ کنفیگریشنز، ڈیٹا بیسز، کیش شدہ میٹا ڈیٹا اور دیگر معاون فائلوں کے لیے بنیادی مقام ہے۔
iOS، Application Support کو Documents (صارف کا ڈیٹا) اور Caches (عارضی ڈیٹا) کے درمیان ایک درمیانی پرت کے طور پر متعین کرتا ہے۔ Application Support میں فائلیں نسبتاً مستقل ہو سکتی ہیں، لیکن صارف کی ان تک براہ راست رسائی نہیں ہونی چاہیے — یہ اسے Documents Directory سے ممتاز کرتا ہے۔
Apple Developer Documentation (2024) کے مطابق، Application Support Core Data SQLite ڈیٹا بیسز، Realm فائلیں، JSON/plist فارمیٹ میں کنفیگریشنز، ڈاؤن لوڈ کردہ حوالہ جاتی مواد اور دیگر ڈیٹا کو ذخیرہ کرنے کے لیے تجویز کردہ مقام ہے جو ایپ استعمال کرتی ہے لیکن صارف نے واضح طور پر نہیں بنایا۔
اہم: بطور ڈیفالٹ، Application Support iCloud اور iTunes بیک اپ میں شامل ہے۔ اگر ایپ اس ڈائرکٹری میں ڈیٹا کی بڑی مقدار ذخیرہ کرتی ہے جسے دوبارہ بنایا جا سکتا ہے (مثلاً ڈاؤن لوڈ کردہ گائیڈز)، تو متعلقہ فائلوں کے لیے isExcludedFromBackup فلیگ سیٹ کرنا ضروری ہے۔
Swift میں، Application Support Directory کا راستہ FileManager.urls(for: .applicationSupportDirectory) کے ذریعے حاصل کیا جاتا ہے۔ Apple ڈیٹا کی علیحدگی کے لیے Application Support کے اندر ایپ کے نام کے ساتھ ایک ذیلی ڈائرکٹری بنانے کی سفارش کرتا ہے۔
import Foundation
let fileManager = FileManager.default
guard let appSupportURL = fileManager.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first else { return }
// Create app subdirectory
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
at: appDir,
withIntermediateDirectories: true
)
Objective-C، NSApplicationSupportDirectory کے ساتھ NSSearchPathForDirectoriesInDomains استعمال کرتا ہے۔ Swift کی طرح، ایپ کے نام کے ساتھ ایک ذیلی ڈائرکٹری بنانے کی سفارش کی جاتی ہے۔
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];
پہلی بار لانچ کرنے پر، Application Support ڈائرکٹری موجود نہیں ہو سکتی — اسے createDirectory(at:withIntermediateDirectories:) کا استعمال کرتے ہوئے بنایا جانا چاہیے۔ یہ اسے Documents Directory سے ممتاز کرتا ہے، جو سسٹم کے ذریعے خود بخود بنائی جاتی ہے۔
Application Support ڈیٹا کی ایک وسیع رینج کے لیے موزوں ہے جو ایپ اپنے کام کے لیے استعمال کرتی ہے۔ اس ڈائرکٹری کے لیے صحیح ڈیٹا کا انتخاب فائل سسٹم کی تنظیم کو بہتر بناتا ہے اور بیک اپ کو آسان بناتا ہے۔
Core Data کی SQLite فائلیں بطور ڈیفالٹ Application Support میں بنائی جاتی ہیں۔ Realm بھی ڈیٹا بیسز کو اس ڈائرکٹری میں رکھنے کی سفارش کرتا ہے۔ یہ صارف کی دستاویزات کو ایپ کے اندرونی ڈیٹا بیسز سے الگ کرتا ہے۔
ایپ کی ترتیبات، Feature Flags، کیش شدہ صارف میٹا ڈیٹا (لیکن تصدیقی ٹوکن نہیں — ان کے لیے Keychain استعمال کریں) پر مشتمل JSON، plist، XML فائلیں۔
| ڈیٹا کی قسم | Application Support | متبادل |
|---|---|---|
| SQLite Core Data | ہاں (بطور ڈیفالٹ) | — |
| کنفیگریشنز .plist / .json | ہاں | UserDefaults (سادہ کے لیے) |
| ڈاؤن لوڈ کردہ حوالہ جاتی مواد | ہاں | Documents (اگر صارف کے لیے) |
| ایپ لاگز | مشروط | Caches (لاگ کے لیے) |
| تصدیقی ٹوکن | نہیں | Keychain |
انتخاب کا معیار: اگر ڈیٹا ایپ کے ذریعے بنایا اور استعمال کیا جاتا ہے، صارف کے ذریعے نہیں، اور لانچوں کے درمیان برقرار رہنا چاہیے — اس کی جگہ Application Support میں ہے۔
Core Data Application Support کے اہم صارفین میں سے ایک ہے۔ NSPersistentContainer بناتے وقت، Core Data خود بخود SQLite فائلوں کو Library/Application Support میں ماڈل کے نام کی بنیاد پر ایک منفرد نام کے ساتھ رکھتا ہے۔
یہ سمجھنا کہ Core Data فائلیں کہاں ذخیرہ کرتا ہے منتقلی (migrations)، بیک اپ اور ڈیبگنگ کے لیے بہت اہم ہے۔ اہم فائلیں: .sqlite (ڈیٹا)، .sqlite-wal (Write-Ahead Log)، .sqlite-shm (Shared Memory)۔
import CoreData
// Create Core Data container
let container = NSPersistentContainer(name: "MyAppModel")
// Custom store URL directory
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 Core Data sync استعمال کرتے وقت، SQLite فائل Application Support میں رہتی ہے اور CloudKit ایک ٹرانسپورٹ پرت کے طور پر کام کرتا ہے۔ اس صورت میں، فائلوں کو بیک اپ سے خارج نہ کرنا ضروری ہے — ورنہ آلات کے درمیان مطابقت پذیری ٹوٹ سکتی ہے۔
Application Support اور Documents کے درمیان فرق iOS ایپ فائل ڈھانچے کو صحیح طریقے سے منظم کرنے کے لیے سب سے اہم فرقوں میں سے ایک ہے۔ غلط انتخاب صارف کے اہم ایپ ڈیٹا کو حادثاتی طور پر حذف کرنے کا باعث بن سکتا ہے یا اس کے برعکس، اپنی فائلیں تلاش کرنے سے قاصر ہو سکتا ہے۔
| پیرامیٹر | Application Support | Documents Directory |
|---|---|---|
| صارف کی رسائی | نہیں (پوشیدہ) | iTunes File Sharing کے ذریعے |
| ڈیٹا کی قسم | ایپ سروس ڈیٹا | صارف کی دستاویزات |
| iCloud بیک اپ | ہاں (بطور ڈیفالٹ) | ہاں (بطور ڈیفالٹ) |
| حذف ہونے کا خطرہ | کم (کوئی رسائی نہیں) | درمیانہ (صارف قابل رسائی) |
| مثال | SQLite Core Data | برآمد کردہ PDF |
سادہ اصول: اگر صارف کو فائل دیکھنی چاہیے اور اسے حذف کرنے کے قابل ہونا چاہیے — Documents استعمال کریں۔ اگر فائل ایپ کے کام کرنے کے لیے ضروری ہے لیکن صارف کو اس کے بارے میں جاننے کی ضرورت نہیں — Application Support استعمال کریں۔ اگر ڈیٹا دوبارہ بنایا جا سکتا ہے — Caches استعمال کریں۔
Application Support کے ساتھ کام کرنے کے لیے کئی خصوصیات پر غور کرنے کی ضرورت ہے جو اسے دیگر سینڈ باکس ڈائرکٹریز سے ممتاز کرتی ہیں۔ ان طریقوں پر عمل کرنے سے ڈیٹا کے نقصان، منتقلی کے مسائل اور غیر متوقع ایپ رویے سے بچنے میں مدد ملتی ہے۔
Documents کے برعکس، Application Support پہلی لانچ پر موجود نہیں ہو سکتی۔ withIntermediateDirectories: true پیرامیٹر کے ساتھ createDirectory(at:withIntermediateDirectories:) استعمال کریں تاکہ ذیلی ڈائرکٹریز کی پوری زنجیر کی تخلیق یقینی ہو۔
Application Support کے اندر Bundle Identifier کے ساتھ ایک ذیلی ڈائرکٹری بنائیں۔ یہ آپ کی ایپ کے ڈیٹا کو دیگر ایپس کے ڈیٹا سے الگ کرتا ہے (اگرچہ سینڈ باکس پہلے سے علیحدگی فراہم کرتا ہے) اور فراہم کنندہ تبدیل کرنے پر منتقلی کو آسان بناتا ہے۔
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
}
}
ان طریقوں پر عمل کرنے سے یہ یقینی ہوتا ہے کہ ایپ کا سروس ڈیٹا مناسب طریقے سے منظم ہے، صارف کے حادثاتی حذف کرنے سے محفوظ ہے، اور بیک اپ سے درست طریقے سے بحال ہوتا ہے۔
اکثر پوچھے گئے سوالات
ہاں، Application Support ایپ انسٹال کرنے پر خود بخود نہیں بنتی۔ Documents اور Caches کے برعکس، جو سسٹم پہلی لانچ پر بناتا ہے، Application Support کو ڈیولپر کو FileManager.createDirectory(at:withIntermediateDirectories:) استعمال کرتے ہوئے بنانا چاہیے۔ یہ عام طور پر application(_:didFinishLaunchingWithOptions:) طریقہ میں کیا جاتا ہے۔
نہیں، معیاری iOS انٹرفیس (Files, iTunes) کے ذریعے صارف کی Application Support تک رسائی نہیں ہے۔ تاہم، جب ایپ خود حذف ہو جاتی ہے، تو پورا سینڈ باکس، بشمول Application Support، مکمل طور پر ہٹا دیا جاتا ہے۔ iCloud بیک اپ بحالی یا دستی حذف کرنے تک باقی رہتا ہے۔
صارف کے لیے ڈاؤن لوڈ کردہ ویڈیوز کے لیے، Documents Directory استعمال کرنا بہتر ہے تاکہ صارف Files کے ذریعے ان فائلوں کا انتظام کر سکے۔ اگر ویڈیو ایپ کے اندرونی کیش کا حصہ ہے (مثلاً آف لائن تربیتی مواد)، تو بڑی فائلوں کے لیے isExcludedFromBackup فلیگ کے ساتھ Application Support استعمال کیا جا سکتا ہے۔
Application Support کے اندر ذیلی ڈائرکٹریز کا ورژننگ شامل کریں۔ اپ ڈیٹ کرتے وقت، موجودہ ڈیٹا ورژن چیک کریں اور اگر ضروری ہو تو ایک نئی ذیلی ڈائرکٹری بنائیں، پرانی کو رول بیک کے لیے رکھیں۔ پرانی ڈائرکٹری کو صرف اس وقت حذف کریں جب تصدیق ہو جائے کہ تمام صارفین کامیابی سے ڈیٹا کے نئے ورژن میں منتقل ہو گئے ہیں۔
بالواسطہ — ہاں۔ اگر Application Support میں دسیوں ہزار چھوٹی فائلیں ہیں، تو FileManager.enumerator ابتدائیہ کو سست کر سکتا ہے۔ Application Support میں فائلوں کی تعداد کو محدود (1000 سے زیادہ نہیں) رکھنے اور ساختہ ڈیٹا کے لیے بہت سی انفرادی فائلوں کے بجائے ڈیٹا بیس (Core Data, Realm) استعمال کرنے کی سفارش کی جاتی ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں