File Provider Extension एक iOS तंत्र है जो एप्लिकेशन को बिल्ट-इन Files ऐप के माध्यम से बाहरी स्रोतों से फ़ाइलों तक पहुँच प्रदान करने की अनुमति देता है। Apple Developer Documentation, 2024 के अनुसार, File Provider Extension क्लाउड स्टोरेज, सर्वर और कस्टम फ़ाइल सिस्टम से फ़ाइलों को Files.app में सीधे प्रदर्शित करने में सक्षम बनाता है — बिना उन्हें स्थानीय रूप से आयात किए। उपयोगकर्ता को उनके भौतिक स्थान की परवाह किए बिना फ़ाइलों के साथ काम करने के लिए एक एकीकृत इंटरफ़ेस मिलता है।
मुख्य बिंदु
File Provider Extension iOS और macOS में एक ऐप एक्सटेंशन है जो किसी एप्लिकेशन को सिस्टम Files ऐप के माध्यम से बाहरी स्रोतों से फ़ाइलों तक पहुँच प्रदान करने की अनुमति देता है। यह iOS 11 में पेश किया गया था और इसने Document Provider तंत्र को बदल दिया, जिसमें सिंक्रनाइज़ेशन, खोज और टैग के लिए समर्थन जोड़ा गया।
File Provider Extension का मुख्य कार्य बाहरी स्टोरेज (क्लाउड सर्वर, कॉर्पोरेट NAS, FTP) और Files.app के बीच एक पुल के रूप में कार्य करना है। उपयोगकर्ता फ़ाइलों और फ़ोल्डरों को ऐसे देखता है जैसे वे स्थानीय रूप से संग्रहीत हैं, हालाँकि डेटा वास्तव में एक दूरस्थ सर्वर पर हो सकता है। एक्सटेंशन पृष्ठभूमि में काम करता है, आवश्यकतानुसार सामग्री को सिंक्रनाइज़ करता है।
WWDC 2024 के अनुसार, Apple FileProvider API को सक्रिय रूप से विकसित कर रहा है: इंक्रीमेंटल सिंक्रनाइज़ेशन के लिए समर्थन जोड़ा गया है, बड़ी निर्देशिकाओं के लिए प्रदर्शन में सुधार किया गया है, और बैच संचालन अब उपलब्ध हैं। यह File Provider Extension को Apple पारिस्थितिकी तंत्र में बाहरी फ़ाइलों को एकीकृत करने का पसंदीदा तरीका बनाता है।
आर्किटेक्चर File Provider Extension में दो घटक होते हैं: मुख्य एक्सटेंशन (फ़ाइल प्रदाता प्रकार) और प्रमाणीकरण और कॉन्फ़िगरेशन के लिए एक वैकल्पिक UI एक्सटेंशन। मुख्य एक्सटेंशन NSFileProviderExtension प्रोटोकॉल को लागू करता है और Files.app से सभी अनुरोधों को संभालता है।
import FileProvider
class CloudFileProvider: NSFileProviderExtension {
override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
guard let item = storage
.item(for: identifier) else {
throw NSError(domain: NSFileProviderErrorDomain,
code: NSFileProviderError.noSuchItem.rawValue)
}
return item
}
override func urlForItem(with identifier: NSFileProviderItemIdentifier) -> URL {
return fileCoordinator.urlForItem(with: identifier)
}
}
जब कोई उपयोगकर्ता Files.app खोलता है और आपके प्रदाता का चयन करता है, तो सिस्टम एक्सटेंशन को पृष्ठभूमि प्रक्रिया में लॉन्च करता है। एक्सटेंशन का कोई UI नहीं है — यह एक हेडलेस प्रक्रिया है जो पढ़ने, लिखने, नाम बदलने और फ़ाइल हटाने के अनुरोधों को संभालती है। सभी ऑपरेशन NSFileProviderManager के माध्यम से एसिंक्रोनस रूप से निष्पादित होते हैं।
महत्वपूर्ण बारीकी: File Provider Extension एक अलग प्रक्रिया में रहता है और मेमोरी कम होने पर सिस्टम द्वारा समाप्त किया जा सकता है। इसलिए, प्रदाता को पुनरारंभ के बाद स्थिति को पुनर्स्थापित करने में सक्षम होना चाहिए, पहचानकर्ताओं और सिंक कैश को स्थायी स्टोरेज में सहेजना चाहिए।
NSFileProviderItem एक प्रोटोकॉल है जो प्रदाता पदानुक्रम में एक व्यक्तिगत फ़ाइल या फ़ोल्डर का वर्णन करता है। प्रत्येक आइटम में एक अद्वितीय पहचानकर्ता, नाम, प्रकार (फ़ाइल या फ़ोल्डर), निर्माण और संशोधन तिथियाँ, आकार और फ़्लैग (ऑफ़लाइन उपलब्ध, केवल पढ़ने योग्य) होते हैं।
| गुण | प्रकार | विवरण |
|---|---|---|
| itemIdentifier | NSFileProviderItemIdentifier | प्रदाता सिस्टम में आइटम की अद्वितीय ID |
| parentItemIdentifier | NSFileProviderItemIdentifier | पैरेंट फ़ोल्डर की ID (रूट — .rootContainer) |
| filename | String | एक्सटेंशन के साथ फ़ाइल का नाम |
| typeIdentifier | String (UTType) | सामग्री प्रकार निर्धारण के लिए यूनिफ़ॉर्म टाइप आइडेंटिफ़ायर |
| capabilities | NSFileProviderItemCapabilities | फ़्लैग: हटाना, नाम बदलना, टैग जोड़ना |
प्रोटोकॉल NSFileProviderItemProtocol के माध्यम से विस्तारित क्षमताओं का भी समर्थन करता है: टैग (रंगीन लेबल), आइकन, संस्करणण और कस्टम क्रियाएँ। बड़ी फ़ाइलों के लिए, NSFileProviderService के माध्यम से पुनरारंभ करने योग्य स्थानांतरण समर्थन लागू किया जाता है।
WWDC 2023 के अनुसार, Apple पूरे ऑब्जेक्ट के बजाय केवल बदली गई प्रॉपर्टी को अपडेट करने के लिए क्लोज़र (NSFileProviderItemFields) का उपयोग करने की सलाह देता है। यह बैच अपडेट के दौरान सिंक्रनाइज़ेशन को काफी तेज करता है — उदाहरण के लिए, जब केवल फ़ाइलों के समूह का आकार बदलता है।
NSFileProviderManager एक्सटेंशन जीवनचक्र के प्रबंधन के लिए केंद्रीय वर्ग है। यह सिस्टम को परिवर्तनों के बारे में संकेत देने, सहयोगी विरोधों को संभालने और डाउनलोड प्रबंधित करने के तरीके प्रदान करता है। प्रबंधक स्वचालित रूप से सक्रिय स्थानांतरण को ट्रैक करता है और उपयोगकर्ता को दिखाई देने वाली फ़ाइलों को प्राथमिकता देता है।
class SyncManager {
let providerManager = NSFileProviderManager.default
func signalUpdate(for item: NSFileProviderItemIdentifier) {
providerManager.signalEnumerator(
for: item.parentItemIdentifier
) { error in
if let error = error {
Logger.sync.error(
"Failed to signal: \(error.localizedDescription)"
)
}
}
}
func uploadItem(at url: URL, itemId: NSFileProviderItemIdentifier) {
providerManager.registerURLBasedItem(
with: itemId,
url: url
)
}
}
सिंक इंजन वह तर्क है जिसे डेवलपर स्वतंत्र रूप से लागू करता है। Apple कोई अंतर्निहित सिंक्रनाइज़ेशन तंत्र प्रदान नहीं करता है — केवल परिवर्तनों के बारे में सिस्टम को सूचित करने के लिए API। प्रदाता स्वयं तय करता है कि सर्वर से फ़ाइलें कैसे डाउनलोड करनी हैं, उन्हें स्थानीय रूप से कैश करना है और संपादन विरोधों को कैसे हल करना है।
विरोध: सिस्टम NSFileProviderSyncAnchor के माध्यम से संस्करण विरोध का पता लगाने का समर्थन करता है। जब कोई फ़ाइल एक साथ स्थानीय और दूरस्थ रूप से बदली जाती है, तो प्रदाता अंतिम सिंक्रनाइज़ संस्करण निर्धारित करने के लिए सिंक एंकर का उपयोग करता है और अंतिम लेखक की जीत रणनीति या विरोधी प्रतिलिपि बनाकर विरोध को हल करता है।
File Provider Extension एक सख्त iOS सैंडबॉक्स के भीतर संचालित होता है। एक्सटेंशन की होस्ट ऐप की फ़ाइल सिस्टम तक सीधी पहुँच नहीं है, और इसके विपरीत, ऐप प्रदाता की फ़ाइलों को सीधे नहीं पढ़ सकता है। सभी डेटा आदान-प्रदान Files.app सिस्टम API के माध्यम से होता है।
उपयोगकर्ता फ़ाइलों तक पहुँच केवल स्पष्ट इंटरैक्शन के माध्यम से संभव है: उपयोगकर्ता किसी एप्लिकेशन में Files.app से एक फ़ाइल खोलता है, और सिस्टम एक पृथक कंटेनर में फ़ाइल की एक अस्थायी प्रतिलिपि बनाता है। प्राप्त करने वाला ऐप इस प्रतिलिपि के साथ काम करता है, प्रदाता के स्टोरेज में मूल के साथ नहीं।
Apple Security Guide, 2024 के अनुसार, प्रदाता को ट्रांसमिशन के दौरान डेटा एन्क्रिप्शन (TLS 1.3) लागू करना होगा और कैश की गई फ़ाइलों के लिए वैकल्पिक रूप से डिस्क एन्क्रिप्शन जोड़ सकता है। उपयोगकर्ता प्रमाणीकरण एक अलग FileProviderUI घटक के माध्यम से किया जाता है, जो सुरक्षित क्रेडेंशियल इनपुट के लिए एक्सटेंशन सैंडबॉक्स के बाहर चलता है।
मुख्य सीमा: एक्सटेंशन मनमाना कोड नहीं चला सकता है — यह केवल NSFileProviderManager के माध्यम से अनुरोधों को संसाधित करता है। फ़ाइल संचालन से परे कोई भी तर्क मुख्य ऐप में लागू किया जाना चाहिए और ऐप ग्रुप या XPC सेवाओं के माध्यम से लागू किया जाना चाहिए।
अक्सर पूछे जाने वाले प्रश्न
File Provider Extension Files ऐप के साथ बाहरी फ़ाइल स्टोरेज को एकीकृत करने के लिए एक ऐप एक्सटेंशन है। यह क्लाउड सेवाओं, FTP, NAS और अन्य स्रोतों से फ़ाइलों को स्थानीय रूप से कॉपी किए बिना प्रदर्शित करने की अनुमति देता है।
File Provider (iOS 11+) ने Document Provider को बदल दिया, जिसमें पृष्ठभूमि सिंक्रनाइज़ेशन, Spotlight खोज समर्थन, टैग और बेहतर प्रदर्शन जोड़ा गया। Document Provider को iOS 11 के साथ हटा दिया गया और iOS 14 में हटा दिया गया।
सिंक्रनाइज़ेशन डेवलपर द्वारा NSFileProviderManager के माध्यम से लागू किया जाता है। एक्सटेंशन signalEnumerator के माध्यम से सिस्टम को परिवर्तनों के बारे में संकेत देता है, और सिस्टम आइटमों की अपडेटेड सूची का अनुरोध करता है। संस्करण विरोधों को NSFileProviderSyncAnchor के माध्यम से हल किया जाता है।
हाँ, File Provider Extension मुख्य ऐप के चलने के बिना एक स्वतंत्र प्रक्रिया के रूप में काम कर सकता है। यह एक हेडलेस एक्सटेंशन है जिसे iOS Files.app के अनुरोध पर लॉन्च करता है। हालाँकि, प्रमाणीकरण और प्रारंभिक सेटअप आमतौर पर मुख्य ऐप के माध्यम से किए जाते हैं।
एक्सटेंशन को Xcode में File Provider क्षमता के साथ-साथ entitlement com.apple.developer.file-provider की आवश्यकता है। नेटवर्क एक्सेस के लिए, Network क्षमता जोड़ी जाती है। अन्य सभी अधिकार iOS सैंडबॉक्स द्वारा सख्ती से सीमित हैं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें