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 फ़ाइलें कहाँ संग्रहीत करता है, माइग्रेशन, बैकअप और डीबगिंग के लिए महत्वपूर्ण है। मुख्य फ़ाइलें: .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 सिंक का उपयोग करते समय, 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें