File Provider Extension: bu nədir, iOS fayllarına giriş genişlənməsi

Müəllif: IT Sectr Dərc olunub: 2026-07-11 Oxuma vaxtı: 6 dəq

File Provider Extension — iOS mexanizmidir ki, proqramlara daxili Fayllar proqramı vasitəsilə xarici mənbələrdən fayllara giriş təmin etməyə imkan verir. Apple Developer Documentation, 2024-ə əsasən, File Provider Extension bulud anbarlarından, serverlərdən və xüsusi fayl sistemlərindən faylları birbaşa Files.app-də göstərməyə imkan verir — onları lokal olaraq idxal etmədən. İstifadəçi fiziki yerləşməsindən asılı olmayaraq fayllarla işləmək üçün vahid interfeys əldə edir.

Əsas məqamlar

  • File Provider Extension — xarici fayl sistemlərini Files.app ilə inteqrasiya etmək üçün iOS genişlənməsi
  • NSFileProviderManager — faylları idarə etmək və vəziyyəti sinxronlaşdırmaq üçün əsas API
  • İki rejim: Foundation-based və FileProviderUI müxtəlif inteqrasiya ssenariləri üçün
  • Təchizatçılar NSFileProviderItem vasitəsilə axtarış, qovluq iyerarxiyası və etiketləri həyata keçirə bilər
  • Təhlükəsizlik Sandbox vasitəsilə təmin edilir — genişlənmə proqramdan təcrid olunmuş şəkildə işləyir

iOS-da File Provider Extension nədir?

File Provider Extension iOS və macOS-da proqram genişlənməsidir ki, proqrama xarici mənbələrdən fayllara sistem Fayllar proqramı vasitəsilə giriş təmin etməyə imkan verir. O, iOS 11-də ortaya çıxdı və Document Provider mexanizmini əvəz edərək sinxronizasiya, axtarış və etiketlər üçün dəstək əlavə etdi.

File Provider Extension-in əsas vəzifəsi xarici anbar (bulud serveri, korporativ NAS, FTP) ilə Files.app arasında körpü rolunu oynamaqdır. İstifadəçi faylları və qovluqları sanki lokal olaraq saxlanılmış kimi görür, halbuki məlumatlar uzaq serverdə yerləşə bilər. Genişlənmə fon rejimində işləyir, məzmunu lazım olduqca sinxronlaşdırır.

WWDC 2024-ə əsasən, Apple FileProvider API-ni fəal şəkildə inkişaf etdirir: artımlı sinxronizasiya dəstəyi, böyük qovluqlar üçün təkmilləşdirilmiş performans və qrup əməliyyatları imkanı əlavə edilib. Bu, File Provider Extension-i Apple ekosistemində xarici faylları inteqrasiya etmək üçün üstünlük verilən üsula çevirir.

File Provider Extension necə işləyir

Arxitektura: File Provider Extension iki komponentdən ibarətdir: əsas genişlənmə (fayl təchizatçısı növü) və autentifikasiya və konfiqurasiya üçün isteğe bağlı UI genişlənməsi. Əsas genişlənmə NSFileProviderExtension protokolunu tətbiq edir və Files.app-dən gələn bütün sorğuları emal edir.

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)
    }
}

İstifadəçi Files.app-i açıb sizin təchizatçınızı seçdikdə, sistem genişlənməni fon prosesində işə salır. Genişlənmənin UI-i yoxdur — bu, faylların oxunması, yazılması, adının dəyişdirilməsi və silinməsi sorğularını emal edən headless prosesdir. Bütün əməliyyatlar NSFileProviderManager vasitəsilə asinxron şəkildə yerinə yetirilir.

Vacib qeyd: File Provider Extension ayrı bir prosesdə işləyir və yaddaş çatışmazlığı zamanı sistem tərəfindən dayandırıla bilər. Buna görə təchizatçı yenidən başlatmadan sonra vəziyyəti bərpa edə bilməli, identifikatorları və sinxronizasiya keşini daimi yaddaşda saxlamalıdır.

NSFileProviderItem modeli: fayllar və qovluqlar

NSFileProviderItem təchizatçı iyerarxiyasında ayrıca fayl və ya qovluğu təsvir edən protokoldur. Hər bir elementin unikal identifikatoru, adı, növü (fayl və ya qovluq), yaradılma və dəyişdirilmə tarixləri, ölçüsü və bayraqları (oflayn əlçatan, yalnız oxumaq üçün) var.

XüsusiyyətTipAçıqlama
itemIdentifierNSFileProviderItemIdentifierTəchizatçı sistemində elementin unikal ID-si
parentItemIdentifierNSFileProviderItemIdentifierAna qovluğun ID-si (kök — .rootContainer)
filenameStringGenişlənmə ilə fayl adı
typeIdentifierString (UTType)Məzmun növünü müəyyən etmək üçün Uniform Type Identifier
capabilitiesNSFileProviderItemCapabilitiesBayraqlar: silmə, ad dəyişdirmə, etiket əlavə etmə

Protokol həmçinin NSFileProviderItemProtocol vasitəsilə genişləndirilmiş imkanları dəstəkləyir: etiketlər (rəngli işarələr), nişanlar, versiyalaşdırma və xüsusi hərəkətlər. Böyük fayllar üçün NSFileProviderService vasitəsilə davam etdirilə bilən transferlər (resumable transfers) dəstəklənir.

WWDC 2023-ə əsasən, Apple bütün obyekti deyil, yalnız dəyişmiş xüsusiyyətləri yeniləmək üçün bağlanmalardan (NSFileProviderItemFields) istifadə etməyi tövsiyə edir. Bu, toplu yeniləmələrdə sinxronizasiyanı əhəmiyyətli dərəcədə sürətləndirir — məsələn, yalnız fayl qrupunun ölçüsü dəyişdikdə.

Sinxronizasiya mühərriki və NSFileProviderManager

NSFileProviderManager — genişlənmənin həyat dövrünü idarə etmək üçün mərkəzi sinifdir. O, sistemə dəyişikliklər barədə siqnal vermək, əməkdaşlıq konfliktlərini emal etmək və yükləmələri idarə etmək üçün metodlar təqdim edir. Menecer aktiv transferləri avtomatik izləyir və istifadəçiyə görünən fayllara üstünlük verir.

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
        )
    }
}

Sinxronizasiya mühərriki — bu, tərtibatçının özünün həyata keçirdiyi məntiqdir. Apple daxili sinxronizasiya mexanizmi təqdim etmir — yalnız dəyişikliklər barədə sistemə məlumat vermək üçün API təqdim edir. Təchizatçı serverdən faylları necə yükləyəcəyinə, onları lokal olaraq keşləyəcəyinə və redaktə konfliktlərini həll edəcəyinə özü qərar verir.

Konfliktlər: sistem NSFileProviderSyncAnchor vasitəsilə versiya konfliktlərinin aşkarlanmasını dəstəkləyir. Fayl eyni anda həm lokal, həm də uzaqda dəyişdirildikdə, təchizatı sinxronizasiya ankerindən son sinxronlaşdırılmış versiyanı müəyyən etmək və konflikti „son yazan qazanır" strategiyası ilə və ya konflikt nüsxəsi yaratmaqla həll etmək üçün istifadə edir.

Təhlükəsizlik və genişlənmə sandboxu

File Provider Extension iOS-un ciddi sandbox (karantin) mühitində işləyir. Genişlənmənin host-proqramın fayl sisteminə birbaşa girişi yoxdur və əksinə — proqram təchizatçının fayllarını birbaşa oxuya bilməz. Bütün məlumat mübadiləsi Files.app-in sistem API-ləri vasitəsilə aparılır.

İstifadəçi fayllarına giriş yalnız açıq qarşılıqlı əlaqə ilə mümkündür: istifadəçi Files.app-dən bir proqramda fayl açır və sistem təcrid olunmuş konteynerdə faylın müvəqqəti nüsxəsini yaradır. Qəbul edən proqram bu nüsxə ilə işləyir, təchizatçı anbarındakı orijinal ilə deyil.

Apple Security Guide, 2024-ə əsasən, təchizatçı məlumat ötürülməsi zamanı şifrələməni (TLS 1.3) tətbiq etməlidir və keşlənmiş fayllar üçün diskdə şifrələmə əlavə edə bilər. İstifadəçi autentifikasiyası FileProviderUI-nin ayrıca UI komponenti vasitəsilə həyata keçirilir ki, bu da etimad məlumatlarının təhlükəsiz daxil edilməsi üçün genişlənmə sandboxından kənarda işə salınır.

Əsas məhdudiyyət: genişlənmə ixtiyari kod işlədə bilməz — o, yalnız NSFileProviderManager vasitəsilə sorğuları emal edir. Fayl əməliyyatları çərçivəsindən kənara çıxan hər hansı məntiq əsas proqramda tətbiq edilməli və app groups və ya XPC services vasitəsilə çağırılmalıdır.

Tez-tez verilən suallar

iOS-da File Provider Extension nədir?

File Provider Extension xarici fayl anbarlarını Fayllar proqramı ilə inteqrasiya etmək üçün proqram genişlənməsidir. O, bulud xidmətlərindən, FTP, NAS və digər mənbələrdən faylları lokal surətini çıxarmadan göstərməyə imkan verir.

File Provider Document Provider-dan nə ilə fərqlənir?

File Provider (iOS 11+) Document Provider-i əvəz edərək fon sinxronizasiyası, Spotlight vasitəsilə axtarış dəstəyi, etiketlər və təkmilləşdirilmiş performans əlavə etdi. Document Provider iOS 11-dən etibarən köhnəlmiş hesab olunur və iOS 14-də silinmişdir.

File Provider Extension faylları necə sinxronlaşdırır?

Sinxronizasiya tərtibatçı tərəfindən NSFileProviderManager vasitəsilə həyata keçirilir. Genişlənmə signalEnumerator vasitəsilə sistemə dəyişikliklər barədə siqnal göndərir, sistem isə yenilənmiş elementlər siyahısını tələb edir. Versiya konfliktləri NSFileProviderSyncAnchor vasitəsilə həll edilir.

Genişlənmə əsas proqram olmadan işləyə bilərmi?

Bəli, File Provider Extension əsas proqram işə salınmadan müstəqil proses kimi işləyə bilər. Bu, iOS-un Files.app sorğusu ilə işə saldığı headless genişlənmədir. Lakin autentifikasiya və ilkin konfiqurasiya adətən əsas proqram vasitəsilə həyata keçirilir.

File Provider Extension üçün hansı giriş hüquqları tələb olunur?

Genişlənmə Xcode-da capability File Providercom.apple.developer.file-provider entitlement tələb edir. Şəbəkəyə giriş üçün Network capability əlavə edilir. Bütün digər hüquqlar iOS sandboxı ilə ciddi şəkildə məhdudlaşdırılır.

Nəticə

  • File Provider Extension — xarici fayl sistemlərini Files.app ilə proqram genişlənməsi vasitəsilə inteqrasiya etmək üçün iOS mexanizmi
  • NSFileProviderManager — faylları idarə etmək, dəyişiklikləri siqnalizasiya etmək və yükləmələr üçün əsas API
  • NSFileProviderItem — təchizatçı iyerarxiyasında məzmun vahidini təsvir edən protokol
  • Sandbox genişlənməni host-proqramdan təcrid edir — məlumat mübadiləsi yalnız Files.app vasitəsilə
  • Sinxronizasiya tərtibatçı tərəfindən həyata keçirilir: Apple API təqdim edir, lakin daxili mühərrik yoxdur
  • Konfliktlər versiyaları sinxronizasiya ankeri vasitəsilə idarə olunur — təchizatçı həll strategiyasını seçir
  • Fon rejimi genişlənməyə proqram işləmədən işləməyə imkan verir, lakin vəziyyətin saxlanmasını tələb edir

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