File Provider Extension ایک iOS میکانزم ہے جو کلاؤڈ سروسز اور ایپس کو سسٹم Files ایپ میں اپنی فائلیں دکھانے کی اجازت دیتا ہے۔ صارف بیرونی دستاویزات کو مقامی دستاویزات کے ساتھ ایک متحد انٹرفیس میں دیکھتا ہے اور اضافی سافٹ ویئر انسٹال کیے بغیر انہیں کھول، منتقل اور ترمیم کر سکتا ہے۔ Apple ڈویلپر دستاویزات (2025) کے مطابق، NSFileProviderManager اضافی سنکرونائزیشن فراہم کرتا ہے اور ڈیوائس پر اپنے کیشے کے ذریعے فائل ورژن کا انتظام کرتا ہے۔
اہم نکات
File Provider Extension ایک ایپ ایکسٹینشن ہے جو Files ایپ میں دستاویزات کے نئے ذرائع شامل کرتا ہے۔ ایک کلاؤڈ سروس — Google Drive، Dropbox، OneDrive یا کارپوریٹ اسٹوریج — علیحدہ ایپ کھولے بغیر براہ راست سسٹم انٹرفیس میں اپنی فائل کا ڈھانچہ دکھا سکتی ہے۔
صارفین ریموٹ فائلوں کے ساتھ بالکل اسی طرح کام کرتے ہیں جیسے ڈیوائس پر محفوظ فائلوں کے ساتھ: فولڈر کے مواد کو براؤز کرنا، دستاویزات کو گھسیٹنا اور چھوڑنا، انہیں کسی بھی مطابقت پذیر ایپ میں کھولنا اور تبدیلیاں واپس کلاؤڈ میں محفوظ کرنا۔WWDC 2025 کے مطابق، File Provider Extension 1000 تک بیک وقت سنک آپریشنز کو سپورٹ کرتا ہے اور متحرک ترجیحی انتظام کے ذریعے نیٹ ورک کی رفتار کے مطابق ڈھل جاتا ہے۔
ایکسٹینشن پس منظر میں چلتا ہے — iOS اسے اس وقت شروع کرتا ہے جب سنکرونائزیشن کی ضرورت ہو اور وسائل کم ہونے پر اسے زبردستی ختم کر سکتا ہے۔ تمام آپریشنز idempotent ہونے چاہئیں اور چیک پوائنٹ سے دوبارہ شروع کرنے کی حمایت کرنی چاہیے۔
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 ٹیمپلیٹ کے ساتھ ایک نیا ہدف شامل کرنے سے شروع ہوتا ہے۔ 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں