File Provider Extension एक iOS तंत्र है जो क्लाउड सेवाओं और ऐप्स को अपनी फ़ाइलों को सिस्टम Files ऐप में प्रदर्शित करने की अनुमति देता है। उपयोगकर्ता बाहरी दस्तावेज़ों को स्थानीय दस्तावेज़ों के साथ एक एकीकृत इंटरफ़ेस में देखता है और अतिरिक्त सॉफ़्टवेयर स्थापित किए बिना उन्हें खोल, स्थानांतरित और संपादित कर सकता है। Apple डेवलपर दस्तावेज़ीकरण (2025) के अनुसार, NSFileProviderManager वृद्धिशील सिंक्रनाइज़ेशन प्रदान करता है और डिवाइस पर अपने स्वयं के कैश के माध्यम से फ़ाइल संस्करणों का प्रबंधन करता है।
मुख्य बिंदु
File Provider Extension एक ऐप एक्सटेंशन है जो Files ऐप में नए दस्तावेज़ स्रोत जोड़ता है। एक क्लाउड सेवा — Google Drive, Dropbox, OneDrive या कॉर्पोरेट स्टोरेज — एक अलग ऐप खोले बिना सीधे सिस्टम इंटरफ़ेस में अपनी फ़ाइल संरचना प्रदर्शित कर सकती है।
उपयोगकर्ता रिमोट फ़ाइलों के साथ ठीक वैसे ही काम करते हैं जैसे डिवाइस पर सहेजी गई फ़ाइलों के साथ: फ़ोल्डर सामग्री ब्राउज़ करना, दस्तावेज़ों को खींचना और छोड़ना, उन्हें किसी भी संगत ऐप में खोलना और परिवर्तनों को वापस क्लाउड में सहेजना। WWDC 2025 के अनुसार, File Provider Extension 1000 तक एक साथ सिंक संचालन का समर्थन करता है और गतिशील प्राथमिकता प्रबंधन के माध्यम से नेटवर्क गति के अनुकूल होता है।
एक्सटेंशन पृष्ठभूमि में चलता है — iOS इसे तब लॉन्च करता है जब सिंक्रनाइज़ेशन की आवश्यकता होती है और संसाधन कम होने पर इसे बलपूर्वक समाप्त कर सकता है। सभी संचालन आइडेम्पोटेंट होने चाहिए और चेकपॉइंट से पुनः आरंभ का समर्थन करने चाहिए।
File Provider Extension में तीन-स्तरीय आर्किटेक्चर है: Files.app सिस्टम प्रक्रिया, प्रदाता एक्सटेंशन और रिमोट सर्वर। सिस्टम एक्सटेंशन से डेटा का अनुरोध करता है, एक्सटेंशन अनुरोधों को क्लाउड सेवा API कॉल में अनुवाद करता है और NSFileProviderItem के माध्यम से परिणाम लौटाता है।
प्रत्येक अपडेट पर पूर्ण फ़ाइल संरचना लोड करने के बजाय, एक्सटेंशन केवल बदले गए आइटम स्थानांतरित करता है। NSFileProviderManager वृद्धिशील अपडेट भेजने के लिए विधियाँ प्रदान करता है — “फ़ाइल A जोड़ा गया”, “फ़ाइल B संशोधित किया गया”, “फ़ोल्डर C हटाया गया”। यह ट्रैफ़िक को नाटकीय रूप से कम करता है और परिवर्तन प्रदर्शन को गति देता है।
Apple इंजीनियरिंग के अनुसार, वृद्धिशील सिंक्रनाइज़ेशन पूर्ण पुनः लोड की तुलना में डेटा स्थानांतरण मात्रा को 60–80% तक कम करता है। सिंक स्थिति को चिह्नित करने और डुप्लिकेट अनुरोधों को कम करने के लिए NSFileProviderSyncAnchor का उपयोग करने की अनुशंसा की जाती है।
File Provider Extension ऑफ़लाइन पहुँच के लिए फ़ाइलों को स्थानीय रूप से कैश कर सकता है। जब कोई फ़ाइल खोली जाती है, तो सिस्टम एक्सटेंशन से अनुरोध करता है, और एक्सटेंशन तय करता है कि सर्वर से सामग्री डाउनलोड करनी है या पहले से कैश किया गया संस्करण लौटाना है। NSFileProviderItem isDownloaded और isUploaded फ़ील्ड के माध्यम से कैशिंग स्तर को इंगित करता है।
Apple फ़ाइल आकार के आधार पर कैशिंग नीतियों को कॉन्फ़िगर करने की अनुशंसा करता है: छवियों और दस्तावेज़ों के लिए — पूर्ण कैशिंग, वीडियो के लिए — केवल पूर्वावलोकन, संग्रह के लिए — उपयोगकर्ता अनुरोध पर।
NSFileProviderManager केंद्रीय वर्ग है जिसके माध्यम से एक्सटेंशन सिस्टम के साथ इंटरैक्ट करता है। यह सिस्टम को परिवर्तनों के बारे में सूचित करने, नए आइटम बनाने, डाउनलोड प्रबंधित करने और त्रुटियों को संभालने के लिए विधियाँ प्रदान करता है। प्रत्येक NSFileProviderManager इंस्टेंस एक विशिष्ट डोमेन से बंधा होता है।
signalEnumerator(for:) — सिस्टम को सूचित करता है कि फ़ोल्डर सामग्री बदल गई है और इसे फिर से पढ़ने की आवश्यकता है। reimportItem(_:) — सर्वर-साइड परिवर्तन के बाद निर्दिष्ट आइटम को पुनः आयात करता है। registerURLSessionTask:forItemWithIdentifier: — प्रगति ट्रैकिंग के लिए एक पृष्ठभूमि डाउनलोड को एक विशिष्ट फ़ाइल से संबद्ध करता है।
महत्वपूर्ण सीमा: NSFileProviderManager केवल एक्सटेंशन प्रक्रिया में काम करता है। मुख्य ऐप फ़ाइल संरचना को प्रबंधित करने के लिए सीधे इसकी विधियाँ कॉल नहीं कर सकता — सिंक्रनाइज़ेशन एक्सटेंशन या सिस्टम द्वारा शुरू किया जाना चाहिए।
let manager = NSFileProviderManager.default()
manager.signalEnumerator(for: workingSet) { error in
if let error = error {
print("Signal failed: \(error)")
}
}
पृष्ठभूमि में फ़ाइल डाउनलोड के लिए, NSFileProviderManager पृष्ठभूमि कॉन्फ़िगरेशन के साथ URLSession का उपयोग करता है। एक्सटेंशन एक डाउनलोड कार्य बनाता है और इसे प्रबंधक में पंजीकृत करता है, जो इसे संबंधित आइटम से संबद्ध करता है। सिस्टम उपयोगकर्ता गतिविधि के आधार पर डाउनलोड प्रगति और प्राथमिकताओं को स्वचालित रूप से ट्रैक करता है।
File Provider Extension बनाना Xcode में File Provider Extension टेम्पलेट के साथ एक नया target जोड़ने से शुरू होता है। Xcode स्वचालित रूप से NSFileProviderExtension से विरासत में मिला एक वर्ग और आइटम के साथ काम करने के लिए विधियों का एक न्यूनतम सेट उत्पन्न करता है।
फ़ाइल संरचना में प्रत्येक आइटम — एक फ़ाइल या फ़ोल्डर — NSFileProviderItem प्रोटोकॉल को लागू करता है। प्रोटोकॉल आवश्यक फ़ील्ड को परिभाषित करता है: itemIdentifier, parentItemIdentifier, filename, typeIdentifier और capabilities। अतिरिक्त रूप से, आप आकार, संशोधन तिथि और डाउनलोड फ़्लैग निर्दिष्ट कर सकते हैं।
struct CloudItem: NSFileProviderItem {
let itemIdentifier: NSFileProviderItemIdentifier
let parentItemIdentifier: NSFileProviderItemIdentifier
let filename: String
let typeIdentifier: String
let capabilities: NSFileProviderItemCapabilities
let documentSize: NSNumber?
}
enumerator(for:) विधि एक ऐसी वस्तु लौटाती है जो NSFileProviderEnumerator को लागू करती है, जो सिस्टम अनुरोध पर फ़ोल्डर सामग्री प्रदान करती है। iOS रूट फ़ोल्डर, उपफ़ोल्डर और एक कार्य सेट के लिए गणना का अनुरोध कर सकता है — बाद वाला हाल की या पसंदीदा फ़ाइलों को प्रदर्शित करने के लिए उपयोग किया जाता है।
Apple एक साथ हजारों आइटम लोड करने से बचने के लिए NSFileProviderPage के माध्यम से पेजिनेशन के साथ एसिंक्रॉनस गणना विधियों का उपयोग करने की अनुशंसा करता है। प्रदर्शन के लिए 50–100 आइटम वाले पेज इष्टतम हैं।
NSFileProviderDomain एक ही एक्सटेंशन के भीतर विभिन्न खातों को अलग करने का तंत्र है। यदि किसी उपयोगकर्ता ने किसी ऐप में कई खातों को अधिकृत किया है — व्यक्तिगत और कॉर्पोरेट Google Drive — तो प्रत्येक खाता एक अलग डोमेन बनाता है, जो Files ऐप में एक अलग स्रोत के रूप में दिखाई देता है।
प्रत्येक डोमेन का एक अद्वितीय पहचानकर्ता, प्रदर्शन नाम और स्थिति होती है। उपयोगकर्ता अन्य खातों को प्रभावित किए बिना डोमेन को अस्थायी रूप से अक्षम या हटा सकते हैं। सिस्टम प्रत्येक सक्रिय डोमेन के लिए एक अलग एक्सटेंशन प्रक्रिया शुरू करता है, जो खातों के बीच डेटा अलगाव सुनिश्चित करता है।
Apple के अनुसार, प्रति एक्सटेंशन 10 से अधिक डोमेन न बनाने की अनुशंसा की जाती है — अत्यधिक संख्या Files ऐप के लॉन्च को धीमा करती है और मेमोरी खपत बढ़ाती है। बड़ी संख्या में खातों वाली सेवाओं के लिए, एक्सटेंशन के भीतर प्रोफ़ाइल स्विचिंग के साथ उन्हें एक ही डोमेन में समेकित करना उचित है।
let domain = NSFileProviderDomain(
identifier: "work",
displayName: "Corporate Drive"
)
NSFileProviderManager.add(domain) { error in
if let error = error {
print("Failed to add domain: \(error)")
}
}
अक्सर पूछे जाने वाले प्रश्न
कोई भी सेवा अपना स्वयं का एक्सटेंशन लागू कर सकती है। समर्थन करने वाली सेवाओं में — Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive और Nextcloud शामिल हैं। एक्सटेंशन किसी भी REST या WebDAV स्टोरेज के लिए सार्वभौमिक है।
एक्सटेंशन स्थानीय फ़ाइल परिवर्तनों के बारे में सिस्टम से सूचनाएँ प्राप्त करता है और उन्हें NSFileProviderManager के माध्यम से सर्वर पर भेजता है। सर्वर से रिवर्स सिंक्रनाइज़ेशन के लिए, NSFileProviderSyncAnchor का उपयोग किया जाता है — अंतिम अपडेट का एक मार्कर।
हाँ, यदि फ़ाइलें स्थानीय रूप से कैश की गई हैं। NSFileProviderItem डाउनलोड की गई फ़ाइलों को isDownloaded फ़्लैग से चिह्नित करता है। ऑफ़लाइन मोड में किए गए परिवर्तन कनेक्शन बहाल होने पर स्वचालित रूप से सिंक हो जाते हैं।
कोई सीधी सीमाएँ नहीं हैं — आकार सर्वर की क्षमताओं द्वारा निर्धारित होता है। Apple 100 MB तक की फ़ाइलों को स्वचालित रूप से कैश करने और बड़ी फ़ाइलों के लिए प्रगति बार के साथ स्ट्रीमिंग डाउनलोड का उपयोग करने की अनुशंसा करता है।
UIDocumentPickerViewController एक मॉडल विंडो के माध्यम से एक बार की फ़ाइल चयन प्रदान करता है। File Provider Extension पृष्ठभूमि सिंक्रनाइज़ेशन और दीर्घकालिक पहुँच के साथ Files ऐप में एक स्थायी दस्तावेज़ स्रोत एम्बेड करता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें