File Provider Extension: ما هو، ملحق الوصول إلى ملفات iOS

المؤلف: IT Sectr نُشر: 2026-07-11 وقت القراءة: 6 دق

File Provider Extension هو آلية iOS تسمح للتطبيقات بتوفير الوصول إلى الملفات من مصادر خارجية من خلال تطبيق الملفات المضمن. وفقًا لـ Apple Developer Documentation, 2024، يتيح File Provider Extension عرض الملفات من التخزين السحابي والخوادم وأنظمة الملفات المخصصة مباشرة في Files.app — دون الحاجة إلى استيرادها محليًا. يحصل المستخدم على واجهة موحدة للعمل مع الملفات بغض النظر عن موقعها الفعلي.

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

  • File Provider Extension — إمتداد iOS لدمج أنظمة الملفات الخارجية مع Files.app
  • NSFileProviderManager — واجهة البرمجة الرئيسية لإدارة الملفات ومكافأة الحالة
  • وضعان للتشغيل: Foundation-based و FileProviderUI لسيناريوهات التكامل المختلفة
  • يمكن للموردين تنفيذ البحث والتسلسل الهرمي للمجلدات والعلامات من خلال NSFileProviderItem
  • يتم ضمان الأمان عبر Sandbox — الإمتداد يعمل بعزل عن التطبيق

ما هو File Provider Extension في iOS؟

File Provider Extension هو إمتداد تطبيق في iOS و macOS يسمح للتطبيق بتوفير الوصول إلى الملفات من مصادر خارجية من خلال تطبيق الملفات النظامي. ظهر في iOS 11 واستبدل آلية Document Provider، مضيفًا دعم المكافأة والبحث والعلامات.

المهمة الرئيسية لـ File Provider Extension هي العمل كجسر بين التخزين الخارجي (خادم سحابي، NAS مؤسسي، FTP) و Files.app. يرى المستخدم الملفات والمجلدات كأنها مخزنة محليًا، وإن كانت البيانات قد تكون موجودة على خادم بعيد. يعمل الإمتداد في الخلفية، مكافئًا المحتوى حسب الحاجة.

وفقًا لـ WWDC 2024، تقوم Apple بتطوير FileProvider API بنشاط: تمت إضافة دعم المكافأة التدريجية، وتحسين الأداء للدليلات الكبيرة، وأصبحت العمليات الدفعية متاحة الآن. هذا يجعل File Provider Extension الطريق المفضل لدمج الملفات الخارجية في نظام Apple البيئي.

كيف يعمل File Provider Extension

المعمارية لـ File Provider Extension تتكون من مكونين: الإمتداد الرئيسي (نوع موفر الملفات) وإمتداد واجهة المستخدم اختياري للمصادقة والتهيئة. يقوم الإمتداد الرئيسي بتنفيذ بروتوكول NSFileProviderExtension ويعالج جميع الطلبات من Files.app.

swift
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 ويختار موردك، يقوم النظام بتشغيل الإمتداد في عملية خلفية. ليس للإمتداد واجهة مستخدم — إنه عملية بدون واجهة تعالج طلبات القراءة والكتابة وإعادة التسمية وحذف الملفات. تتم جميع العمليات بشكل غير متزامن عبر NSFileProviderManager.

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

نموذج NSFileProviderItem: الملفات والمجلدات

NSFileProviderItem هو بروتوكول يصف ملفًا أو مجلدًا فرديًا في التسلسل الهرمي للمورد. كل عنصر له معرف فريد، واسم، نوع (ملف أو مجلد)، تواريخ الإنشاء والتعديل، الحجم والعلامات (متاح بدون اتصال، قابل للقراءة فقط).

الخاصيةالنوعالوصف
itemIdentifierNSFileProviderItemIdentifierمعرف فريد للعنصر في نظام المورد
parentItemIdentifierNSFileProviderItemIdentifierمعرف المجلد الأصلي (الجذر — .rootContainer)
filenameStringاسم الملف بالامتداد
typeIdentifierString (UTType)معرف النوع الموحد لتحديد نوع المحتوى
capabilitiesNSFileProviderItemCapabilitiesعلامات: الحذف، إعادة التسمية، إضافة العلامات

يدعم البروتوكول أيضًا إمكانيات ممتدة من خلال NSFileProviderItemProtocol: العلامات (علامات ملونة)، الأيقونات، الإصدارات والإجراءات المخصصة. بالنسبة للملفات الكبيرة، يتم تنفيذ دعم النقل القابل للاستئناف من خلال NSFileProviderService.

وفقًا لـ WWDC 2023، توصي Apple باستخدام العمليات (إغلاقات) (NSFileProviderItemFields) لتحديث الخصائص المغيرة فقط بدلاً من الكائن بأكمله. هذا يسرع المكافأة بشكل كبير أثناء التحديثات الدفعية — على سبيل المثال، عندما يتغير حجم مجموعة من الملفات فقط.

محرك المكافأة و NSFileProviderManager

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

swift
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. ليس للإمتداد إمكانية الوصول المباشر إلى نظام الملفات للتطبيق المضيف، وبالعكس، لا يمكن للتطبيق قراءة ملفات المورد مباشرة. يتم تبادل البيانات بأكمله من خلال API لنظام Files.app.

لا يمكن الوصول إلى ملفات المستخدم إلا من خلال تفاعل صريح: يفتح المستخدم ملفًا من Files.app في تطبيق، ويقوم النظام بإنشاء نسخة مؤقتة من الملف في حاوية معزولة. يعمل التطبيق المستلم مع هذه النسخة، ليس مع الأصل في تخزين المورد.

وفقًا لـ Apple Security Guide, 2024، يجب على المورد تنفيذ تشفير البيانات أثناء النقل (TLS 1.3) ويمكنه إضافة تشفير القرص باختياره للملفات المخزنة مؤقتًا. يتم توثيق مصادقة المستخدم من خلال مكون FileProviderUI منفصل، يعمل خارج صندوق الرمل للإمتداد لإدخال بيانات الاعتماد بأمان.

القيود الرئيسية: لا يمكن للإمتداد تشغيل برمجية اعتباطية — يعالج فقط الطلبات من خلال NSFileProviderManager. أي منطق خارج عمليات الملفات يجب تنفيذه في التطبيق الرئيسي واستدعاؤه من خلال مجموعات التطبيقات أو خدمات XPC.

الأسئلة الشائعة

ما هو File Provider Extension في iOS؟

File Provider Extension هو إمتداد تطبيق لدمج تخزين الملفات الخارجي مع تطبيق الملفات. يسمح بعرض الملفات من الخدمات السحابية و FTP و NAS ومصادر أخرى دون نسخها محليًا.

ما الفرق بين File Provider و Document Provider؟

File Provider (iOS 11+) استبدل Document Provider، مضيفًا المكافأة في الخلفية، دعم البحث عبر Spotlight، العلامات وأداء محسن. Document Provider أصبح مهجورًا منذ iOS 11 وتمت إزالته في iOS 14.

كيف يقوم File Provider Extension بمكافأة الملفات؟

يقوم المطور بتنفيذ المكافأة من خلال NSFileProviderManager. يشير الإمتداد إلى النظام بالتغييرات عبر signalEnumerator، ويطلب النظام قائمة محدثة من العناصر. يتم حل تعارضات الإصدار من خلال NSFileProviderSyncAnchor.

هل يمكن للإمتداد العمل بدون التطبيق الرئيسي؟

نعم، يمكن File Provider Extension العمل كعملية مستقلة دون تشغيل التطبيق الرئيسي. إنه إمتداد بدون واجهة يقوم iOS بتشغيله عند طلب Files.app. ومع ذلك، عادة ما يتم المصادقة والإعداد الأولي من خلال التطبيق الرئيسي.

ما هي أذونات الوصول التي تحتاجها File Provider Extension؟

يتطلب الإمتداد إمكانية File Provider في Xcode، بالإضافة إلو9 الترخيص com.apple.developer.file-provider. للوصول إلى الشبكة، تتم إضافة إمكانية Network. جميع الحقوق الأخرى مقيدة بشكل صارم بواسطة صندوق رمل iOS.

الملخص

  • File Provider Extension — آلية iOS لدمج أنظمة الملفات الخارجية مع Files.app عبر إمتداد التطبيق
  • NSFileProviderManager — واجهة البرمجة الرئيسية لإدارة الملفات والإشارة إلى التغييرات والتنزيلات
  • NSFileProviderItem — بروتوكول يصف وحدة المحتوى في التسلسل الهرمي للمورد
  • Sandbox يعزل الإمتداد عن التطبيق المضيف — تبادل البيانات فقط عبر Files.app
  • المكافأة يقوم بتنفيذها المطور: Apple توفر API ولكن ليس محركًا مضمنًا
  • تعارضات الإصدار يتم معالجتها عبر مرساة المكافأة — يختار المورد استراتيجية الحل
  • وضع الخلفية يسمح للإمتداد بالعمل دون تشغيل التطبيق، ولكنه يتطلب الحفاظ على الحالة

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

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

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

اقرأ أيضًا