File Provider Extension: ما هو وكيف يعمل مزود الملفات في iOS

المؤلف: IT Sectr نُشر: 2026-06-15 وقت القراءة: 9 دق

File Provider Extension هي آلية في iOS تتيح للخدمات السحابية والتطبيقات عرض ملفاتها في تطبيق Files النظامي. يرى المستخدم المستندات الخارجية في واجهة موحدة جنباً إلى جنب مع المستندات المحلية ويمكنه فتحها ونقلها وتحريرها دون تثبيت برامج إضافية. وفقاً لوثائق مطوري Apple (2025)، يوفر NSFileProviderManager مزامنة تدريجية ويدير إصدارات الملفات من خلال ذاكرة التخزين المؤقت الخاصة به على الجهاز.

الخلاصة

  • File Provider Extension يدمج التخزين السحابي وخدمات الملفات في تطبيق Files على iOS
  • تعتمد البنية على بروتوكول NSFileProviderExtension ومدير NSFileProviderManager لمزامنة البيانات
  • يدعم الامتداد المزامنة التدريجية — يتم نقل الكتل المعدلة فقط، وليس الملفات الكاملة
  • يتم تمثيل كل ملف بواسطة كائن NSFileProviderItem مع بيانات وصفية: الحجم، تاريخ التعديل، نوع المحتوى والأذونات
  • تتيح المجالات (NSFileProviderDomain) فصل الحسابات المختلفة داخل امتداد واحد

ما هو File Provider Extension في iOS

File Provider Extension هو امتداد تطبيق يضيف مصادر مستندات جديدة إلى تطبيق Files. يمكن لخدمة سحابية — Google Drive أو Dropbox أو OneDrive أو وحدة تخزين مؤسسية — عرض هيكل ملفاتها مباشرة في واجهة النظام، دون فتح تطبيق منفصل.

يعمل المستخدمون مع الملفات البعيدة تماماً كما يعملون مع الملفات المحفوظة على الجهاز: تصفح محتويات المجلدات، سحب وإفلات المستندات، فتحها في أي تطبيق متوافق، وحفظ التغييرات مرة أخرى إلى السحابة. وفقاً لـ WWDC 2025، يدعم File Provider Extension ما يصل إلى 1000 عملية مزامنة متزامنة ويتكيف مع سرعة الشبكة من خلال إدارة الأولويات الديناميكية.

يعمل الامتداد في الخلفية — يقوم iOS بتشغيله عند الحاجة إلى المزامنة ويمكنه إنهاؤه قسراً عند نقص الموارد. يجب أن تكون جميع العمليات مستقلة وتدعم الاستئناف من نقطة تفتيش.

البنية وآلية مزامنة الملفات

File Provider Extension له بنية ثلاثية المستويات: عملية النظام Files.app، وامتداد المزود، والخادم البعيد. يطلب النظام البيانات من الامتداد، ويقوم الامتداد بترجمة الطلبات إلى استدعاءات API للخدمة السحابية وإرجاع النتائج عبر NSFileProviderItem.

المزامنة التدريجية

بدلاً من تحميل هيكل الملفات الكامل في كل تحديث، ينقل الامتداد فقط العناصر المعدلة. يوفر NSFileProviderManager طرقاً لإرسال التحديثات التدريجية — «تمت إضافة الملف أ»، «تم تعديل الملف ب»، «تم حذف المجلد ج». هذا يقلل بشكل جذري من حركة المرور ويسرع عرض التغييرات.

وفقاً لهندسة Apple، تقلل المزامنة التدريجية من حجم البيانات المنقولة بنسبة 60–80% مقارنة بإعادة التحميل الكاملة. يوصى باستخدام NSFileProviderSyncAnchor لوضع علامة على حالة المزامنة وتقليل الطلبات المكررة.

التخزين المؤقت على الجهاز

File Provider Extension يمكنه تخزين الملفات محلياً للوصول دون اتصال. عند فتح ملف، يقوم النظام بتقديم طلب إلى الامتداد، ويقرر الامتداد ما إذا كان سيقوم بتنزيل المحتوى من الخادم أو إرجاع نسخة مخزنة مؤقتاً بالفعل. يشير NSFileProviderItem إلى مستوى التخزين المؤقت من خلال حقلي isDownloaded و isUploaded.

توصي Apple بتكوين سياسات التخزين المؤقت بناءً على حجم الملف: للصور والمستندات — تخزين مؤقت كامل، للفيديو — معاينات فقط، للأرشيفات — بناءً على طلب المستخدم.

NSFileProviderManager: إدارة مزود الملفات

NSFileProviderManager هو الفئة المركزية التي يتفاعل من خلالها الامتداد مع النظام. يوفر طرقاً لإخطار النظام بالتغييرات، وإنشاء عناصر جديدة، وإدارة التنزيلات، ومعالجة الأخطاء. كل مثيل من NSFileProviderManager مرتبط بمجال محدد.

الطرق الرئيسية

signalEnumerator(for:) — يخطر النظام بأن محتويات المجلد قد تغيرت وتحتاج إلى إعادة قراءة. reimportItem(_:) — يعيد استيراد العنصر المحدد بعد تغيير على الخادم. registerURLSessionTask:forItemWithIdentifier: — يربط تنزيلاً في الخلفية بملف معين لتتبع التقدم.

قيود مهمة: يعمل NSFileProviderManager فقط ضمن عملية الامتداد. لا يمكن للتطبيق الرئيسي استدعاء طرقه مباشرة لإدارة هيكل الملفات — يجب أن تبدأ المزامنة بواسطة الامتداد أو النظام.

swift
let manager = NSFileProviderManager.default()
manager.signalEnumerator(for: workingSet) { error in
    if let error = error {
        print("Signal failed: \(error)")
    }
}

إدارة التنزيلات

لتنزيل الملفات في الخلفية، يستخدم NSFileProviderManager URLSession مع تكوين خلفية. يقوم الامتداد بإنشاء مهمة تنزيل وتسجيلها في المدير، الذي يربطها بالعنصر المقابل. يتتبع النظام تلقائياً تقدم التنزيل وأولوياته بناءً على نشاط المستخدم.

تنفيذ File Provider Extension

يبدأ إنشاء File Provider Extension بإضافة target جديد في Xcode باستخدام قالب File Provider Extension. يقوم Xcode تلقائياً بإنشاء فئة ترث من NSFileProviderExtension ومجموعة دنيا من الطرق للعمل مع العناصر.

NSFileProviderItem والبيانات الوصفية

كل عنصر في هيكل الملفات — ملف أو مجلد — يطبق بروتوكول NSFileProviderItem. يحدد البروتوكول الحقول الإلزامية: itemIdentifier و parentItemIdentifier و filename و typeIdentifier و capabilities. بالإضافة إلى ذلك، يمكن تحديد الحجم وتاريخ التعديل وإشارات التنزيل.

swift
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 ويزيد من استهلاك الذاكرة. بالنسبة للخدمات التي تحتوي على عدد كبير من الحسابات، من الأفضل تجميعها في مجال واحد مع تبديل الملفات الشخصية داخل الامتداد.

swift
let domain = NSFileProviderDomain(
    identifier: "work",
    displayName: "Corporate Drive"
)
NSFileProviderManager.add(domain) { error in
    if let error = error {
        print("Failed to add domain: \(error)")
    }
}

الأسئلة المتكررة

ما هي الخدمات السحابية التي تدعم File Provider Extension؟

يمكن لأي خدمة تنفيذ الامتداد الخاص بها. من بين الخدمات الداعمة — Google Drive و Dropbox و Microsoft OneDrive و Box و iCloud Drive و Nextcloud. الامتداد عالمي لأي تخزين REST أو WebDAV.

كيف يقوم الامتداد بمزامنة التغييرات مع الخادم؟

يتلقى الامتداد إخطارات من النظام حول تغييرات الملفات المحلية ويرسلها إلى الخادم عبر NSFileProviderManager. للمزامنة العكسية من الخادم، يتم استخدام NSFileProviderSyncAnchor — علامة آخر تحديث.

هل يمكن للامتداد العمل دون اتصال؟

نعم، إذا كانت الملفات مخزنة مؤقتاً محلياً. يقوم NSFileProviderItem بوضع علامة على الملفات التي تم تنزيلها باستخدام العلم isDownloaded. تتم مزامنة التغييرات التي تم إجراؤها في وضع عدم الاتصال تلقائياً عند استعادة الاتصال.

ما هي حدود حجم الملفات الموجودة؟

لا توجد حدود مباشرة — يتم تحديد الحجم من خلال إمكانيات الخادم. توصي Apple بالتخزين المؤقت التلقائي للملفات حتى 100 ميجابايت، وبالنسبة للملفات الأكبر حجماً، استخدام التنزيل بالتدفق مع شريط التقدم.

ما الفرق بين NSFileProviderExtension و UIDocumentPickerViewController؟

UIDocumentPickerViewController يوفر تحديد ملفات لمرة واحدة من خلال نافذة مشروطة. File Provider Extension يدمج مصدراً دائماً للمستندات في تطبيق Files مع مزامنة خلفية ووصول طويل المدى.

الملخص

  • File Provider Extension يدمج خدمات الملفات الخارجية في تطبيق Files، مما يجعل المستندات البعيدة متاحة في واجهة موحدة
  • تستخدم البنية NSFileProviderExtension و NSFileProviderManager للمزامنة التدريجية للبيانات مع الخادم
  • NSFileProviderItem يمثل ملفاً أو مجلداً فردياً بمجموعة كاملة من البيانات الوصفية والإمكانيات
  • توفر المجالات (NSFileProviderDomain) بنية متعددة الحسابات مع عزل البيانات بين الحسابات
  • يسمح التخزين المؤقت على الجهاز بالعمل مع الملفات دون اتصال مع مزامنة تلقائية بعد استعادة الاتصال
  • تقلل المزامنة التدريجية من حركة المرور بنسبة 60–80% مقارنة بإعادة تحميل هيكل الملفات بالكامل

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا