File Provider Extension: bu nədir və iOS fayl provayderi necə işləyir

Müəllif: IT Sectr Dərc olunub: 2026-06-15 Oxuma vaxtı: 9 dəq

File Provider Extension — bu iOS mexanizmidir ki, bulud xidmətlərinə və tətbiqlərə öz fayllarını sistem Fayllar tətbiqində göstərməyə imkan verir. İstifadəçi xarici sənədləri vahid interfeysdə lokal fayllarla bərabər görür və onları əlavə proqram quraşdırmadan aça, köçürə və redaktə edə bilər. Apple Developer Documentation (2025) məlumatına görə, NSFileProviderManager artımlı sinxronizasiyanı təmin edir və fayl versiyalarını cihazdakı öz keş vasitəsilə idarə edir.

Əsas məqamlar

  • File Provider Extension bulud anbarlarını və fayl xidmətlərini iOS-da sistem Fayllar tətbiqinə inteqrasiya edir
  • Arxitektura NSFileProviderExtension protokoluna və NSFileProviderManager menecerinə əsaslanır
  • Genişlənmə artımlı sinxronizasiyanı dəstəkləyir — tam fayllar deyil, yalnız dəyişdirilmiş bloklar ötürülür
  • Hər bir fayl NSFileProviderItem obyekti ilə təmsil olunur: ölçü, dəyişdirilmə tarixi, məzmun növü və giriş hüquqları
  • Domenlər (NSFileProviderDomain) bir genişlənmə daxilində müxtəlif hesabları ayırmağa imkan verir

File Provider Extension nədir iOS-da

File Provider Extension — bu Fayllar tətbiqinə yeni sənəd mənbələri əlavə edən tətbiq genişlənməsidir. Bulud xidməti — Google Drive, Dropbox, OneDrive və ya korporativ anbar — öz fayl strukturunu birbaşa sistem interfeysində, ayrı tətbiq açmadan göstərə bilər.

İstifadəçi uzaq fayllarla cihazda saxlanılanlarla eyni şəkildə işləyir: qovluqların məzmununa baxır, sənədləri sürükləyir, onları istənilən uyğun tətbiqdə açır və dəyişiklikləri buluda geri qeyd edir. WWDC 2025 məlumatına görə, File Provider Extension 1000-ə qədər eyni vaxtda sinxronizasiya əməliyyatını dəstəkləyir və dinamik prioritet idarəetməsi vasitəsilə şəbəkə sürətinə uyğunlaşır.

Genişlənmə fonda işləyir — iOS sinxronizasiya ehtiyacı olduqda onu işə salır və resurs çatışmazlığında məcburi dayandıra bilər. Bütün əməliyyatlar idempotent olmalı və yoxlama nöqtəsindən bərpanı dəstəkləməlidir.

Arxitektura və fayl sinxronizasiya mexanizmi

File Provider Extension üçsəviyyəli arxitekturaya malikdir: sistem prosesi Files.app, provayder-genişlənmə və uzaq server. Sistem genişlənmədən məlumat tələb edir, genişlənmə sorğuları bulud xidmətinin API çağırışlarına çevirir və nəticələri NSFileProviderItem vasitəsilə qaytarır.

Artımlı sinxronizasiya

Hər yeniləmədə tam fayl strukturunu yükləmək əvəzinə, genişlənmə yalnız dəyişdirilmiş elementləri ötürür. NSFileProviderManager artımlı yeniləmələri göndərmək üçün metodlar təqdim edir — “A faylı əlavə edildi”, “B faylı dəyişdirildi”, “C qovluğu silindi”. Bu trafiki kəskin şəkildə azaldır və dəyişikliklərin göstərilməsini sürətləndirir.

Apple Engineering məlumatına görə, artımlı sinxronizasiya ötürülən məlumatın həcmini tam yenidən yükləmə ilə müqayisədə 60–80% azaldır. Sinxronizasiya vəziyyətini qeyd etmək və təkrarlanan sorğuları minimuma endirmək üçün NSFileProviderSyncAnchor istifadə etmək tövsiyə olunur.

Cihazda keşləmə

File Provider Extension oflayn çıxış üçün faylları lokal olaraq keşləyə bilər. Fayl açılarkən sistem genişlənməyə sorğu göndərir, genişlənmə qərar verir — məzmunu serverdən endirsin və ya artıq keşlənmiş versiyanı qaytarsın. NSFileProviderItem isDownloaded və isUploaded sahələri vasitəsilə keşləmə səviyyəsini göstərir.

Apple fayl ölçüsündən asılı olaraq keşləmə siyasətini konfiqurasiya etməyi tövsiyə edir: şəkillər və sənədlər üçün — tam keşləmə, video üçün — yalnız önbaxış, arxivlər üçün — istifadəçinin tələbi ilə.

NSFileProviderManager: fayl provayderinin idarə edilməsi

NSFileProviderManager — genişlənmənin sistemlə çağrışdığı mərkəzi sinifdir. O, sistemi dəyişikliklər barədə xəbərdar etmək, yeni elementlər yaratmaq, yükləmələri idarə etmək və xətaları emal etmək üçün metodlar təqdim edir. Hər bir NSFileProviderManager nüsxəsi müəyyən bir domenə bağlıdır.

Əsas metodlar

signalEnumerator(for:) — sistemə qovluğun məzmununun dəyişdiyini və siyahının yenidən oxunmalı olduğunu bildirir. reimportItem(_:) — serverdə dəyişiklikdən sonra göstərilən elementi yenidən idxal edir. registerURLSessionTask:forItemWithIdentifier: — fonda yükləməni müəyyən faylla əlaqələndirir və tərəqqini izləyir.

Ƈhəmiyyətli məhdudiyyət: NSFileProviderManager yalnız genişlənmə prosesində işləyir. Əsas tətbiq fayl strukturunu idarə etmək üçün onun metodlarını birbaşa çağıra bilməz — sinxronizasiya genişlənmə və ya sistem tərəfindən başladılmalıdır.

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

Yükləmələrin idarə edilməsi

Faylları fonda yükləmək üçün NSFileProviderManager URLSession-dən fon konfiqurasiyası ilə istifadə edir. Genişlənmə yükləmə tapşırığı yaradır və onu menecerdə qeydiyyatdan keçirir, o da onu müvafiq elementə bağlayır. Sistem avtomatik olaraq istifadəçi fəallığından asılı olaraq yükləmə tərəqqisini və prioritetlərini izləyir.

File Provider Extension-ın tətbiqi

File Provider Extension yaratmaq Xcode-da File Provider Extension şablonu ilə yeni target əlavə etməklə başlayır. Xcode avtomatik olaraq NSFileProviderExtension-dən miras alan sinif və elementlərlə işləmək üçün minimal metod dəsti yaradır.

NSFileProviderItem və metadatlar

Fayl strukturunun hər bir elementi — fayl və ya qovluq — NSFileProviderItem protokolunu tətbiq edir. Protokol məcburi sahələri müəyyənləşdirir: itemIdentifier, parentItemIdentifier, filename, typeIdentifier və capabilities. Əlavə olaraq ölçünü, dəyişdirilmə tarixini və yükləmə bayraqlarını göstərmək olar.

swift
struct CloudItem: NSFileProviderItem {
    let itemIdentifier: NSFileProviderItemIdentifier
    let parentItemIdentifier: NSFileProviderItemIdentifier
    let filename: String
    let typeIdentifier: String
    let capabilities: NSFileProviderItemCapabilities
    let documentSize: NSNumber?
}

Sadalama sorğularının emalı

enumerator(for:) metodu sistemin tələbi ilə qovluğun məzmununu təmin edən NSFileProviderEnumerator obyektini qaytarır. iOS kök qovluq, alt qovluqlar və iş dəsti üçün sadalama tələb edə bilər — sonuncu son və ya seçilmiş faylları göstərmək üçün istifadə olunur.

Apple eyni anda minlərlə elementi yükləməmək üçün NSFileProviderPage vasitəsilə səhifələmə ilə asinxron sadalama metodlarından istifadə etməyi tövsiyə edir. 50–100 elementlik səhifələr performans üçün optimaldır.

Domenlər və çoxhesablı arxitektura

NSFileProviderDomain — bir genişlənmə daxilində müxtəlif hesabları ayırmaq mexanizmidir. İstifadəçi tətbiqdə bir neçə hesab autorizasiya edibsə — şəxsi və korporativ Google Drive — hər hesab ayrı domen yaradır, o da Fayllar tətbiqində ayrı mənbə kimi göstərilir.

Hər domenin unikal identifikatoru, göstərilən adı və vəziyyəti var. İstifadəçi digər hesablara təsir etmədən domenləri müvəqqəti olaraq söndürə və ya silə bilər. Sistem hər aktiv domen üçün ayrı genişlənmə prosesi işə salır ki, bu da hesablar arasında məlumat izolyasiyasını təmin edir.

Apple məlumatına görə, bir genişlənmə üçün 10-dan çox domen yaratmamaq tövsiyə olunur — həddindən çox say Fayllar tətbiqinin işə düşməsini lɘngidir və yaddaş istehlakını artırır. Çox sayda hesabı olan xidmətlər üçün onları genişlənmə daxilində profil dəyişdirmə ilə bir domenə yığmaq daha yaxşıdır.

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

Tez-tez verilən suallar

Hansı bulud xidmətləri File Provider Extension-ı dəstəkləyir?

İstənilən xidmət öz genişlənməsini həyata keçirə bilər. Dəstəkləyənlər arasında Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive və Nextcloud var. Genişlənmə istənilən REST və ya WebDAV anbarı üçün universaldır.

Genişlənmə dəyişiklikləri serverlə necə sinxronizasiya edir?

Genişlənmə sistemdən lokal fayl dəyişiklikləri barədə bildirişlər alır və onları NSFileProviderManager vasitəsilə serverə göndərir. Serverdən əks sinxronizasiya üçün NSFileProviderSyncAnchor — son yeniləmə markeri istifadə olunur.

Genişlənmə oflayn işləyə bilərmi?

Bəli, əgər fayllar lokal olaraq keşlənibsə. NSFileProviderItem endirilmiş faylları isDownloaded bayrağı ilə qeyd edir. Oflayn rejimdə edilən dəyişikliklər əlaqə bərpa olunduqda avtomatik sinxronizasiya olunur.

Fayl ölçüsü ilə bağlı hansı məhdudiyyətlər var?

Birbaşa məhdudiyyət yoxdur — ölçü serverin imkanları ilə müəyyən olunur. Apple faylları avtomatik olaraq 100 MB-a qədər keşləməyi, daha böyük fayllar üçün isə tərəqqi zolağı ilə axın yükləmədən istifadə etməyi tövsiyə edir.

NSFileProviderExtension ilə UIDocumentPickerViewController arasında nə fərq var?

UIDocumentPickerViewController modal pəncərə vasitəsilə birdəfəlik fayl seçimi təmin edir. File Provider Extension isə Fayllar tətbiqinə fon sinxronizasiyası və uzunmüddətli girişlə daimi sənəd mənbəyi yerləşdirir.

Nəticə

  • File Provider Extension xarici fayl xidmətlərini Fayllar tətbiqinə inteqrasiya edir, uzaq sənədləri vahid interfeysdə əlçatan edir
  • Arxitektura serverlə artımlı məlumat sinxronizasiyası üçün NSFileProviderExtension və NSFileProviderManager-dən istifadə edir
  • NSFileProviderItem tam metadata və imkanlar dəsti ilə ayrıca fayl və ya qovluğu təmsil edir
  • Domenlər (NSFileProviderDomain) hesablar arasında məlumat izolyasiyası ilə çoxhesablı arxitektura təmin edir
  • Cihazda keşləmə əlaqə bərpa olunduqdan sonra avtomatik sinxronizasiya ilə fayllarla oflayn işləməyə imkan verir
  • Artımlı sinxronizasiya fayl strukturunun tam yenidən yüklənməsi ilə müqayisədə trafiki 60–80% azaldır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun