File Provider Extension: co to je a jak funguje poskytovatel souborů iOS

Autor: IT Sectr Publikováno: 2026-06-15 Doba čtení: 9 min

File Provider Extension je mechanismus iOS, který umožňuje cloudovým službám a aplikacím zobrazovat své soubory v systémové aplikaci Soubory. Uživatel vidí externí dokumenty v jednotném rozhraní na stejné úrovni jako místní a může je otevírat, přesouvat a upravovat bez instalace dalšího softwaru. Podle Apple Developer Documentation (2025) poskytuje NSFileProviderManager inkrementální synchronizaci a spravuje verze souborů prostřednictvím vlastní mezipaměti na zařízení.

Hlavní body

  • File Provider Extension integruje cloudová úložiště a souborové služby do systémové aplikace Soubory na iOS
  • Architektura je založena na protokolu NSFileProviderExtension a správci NSFileProviderManager pro synchronizaci dat
  • Rozšíření podporuje inkrementální synchronizaci — přenášejí se pouze změněné bloky, nikoli celé soubory
  • Každý soubor je reprezentován objektem NSFileProviderItem s metadaty: velikost, datum změny, typ obsahu a přístupová práva
  • Domény (NSFileProviderDomain) umožňují oddělení různých účtů v rámci jednoho rozšíření

Co je File Provider Extension v iOS

File Provider Extension je rozšíření aplikace, které pŔídává nové zdroje dokumentů do aplikace Soubory. Cloudová služba — Google Drive, Dropbox, OneDrive nebo firemní úložiště — může zobrazit svou souborovou strukturu přímo v systémovém rozhraní, bez otevírání samostatné aplikace.

Uživatel pracuje se vzdálenými soubory úplně stejně jako s těmi uloženými na zařízení: prohlíží obsah složek, přetahuje dokumenty, otevírá je v libovolné kompatibilní aplikaci a ukládá změny zpět do cloudu. Podle WWDC 2025 podporuje File Provider Extension až 1000 současných synchronizačních operací a přizpůsobuje se rychlosti sítě pomocí dynamické správy priorit.

Rozšíření pracuje na pozadí — iOS jej spouští pŔi potřebě synchronizace a může jej násilně ukončit pŔi nedostatku zdrojů. Všechny operace musí být idempotentní a podporovat obnovení z kontrolního bodu.

Architektura a mechanismus synchronizace souborů

File Provider Extension má tŔívrstvou architekturu: systémový proces Files.app, rozšíření-poskytovatele a vzdálený server. Systém požaduje data od rozšíření, rozšíření transformuje požadavky na API volání cloudové služby a vrací výsledky prostřednictvím NSFileProviderItem.

Inkrementální synchronizace

Místo načítání celé souborové struktury pŔi každé aktualizaci rozšíření přenáší pouze změněné prvky. NSFileProviderManager poskytuje metody pro odesílání inkrementálních aktualizací — „soubor A byl pŔidán“, „soubor B byl změněn“, „složka C byla smazána“. To drasticky snižuje provoz a zrychluje zobrazování změn.

Podle Apple Engineering snižuje inkrementální synchronizace objem pŔenášených dat o 60–80% ve srovnání s úplným znovunačtením. Doporučuje se používat NSFileProviderSyncAnchor pro označení stavu synchronizace a minimalizaci duplicitních požadavků.

Mezipaměť na zařízení

File Provider Extension může ukládat soubory lokálně do mezipaměti pro offline pŔístup. PŔi otevírání souboru systém odešle požadavek rozšíření, rozšíření rozhodne — stáhnout obsah ze serveru nebo vrátit již zǎachovanou verzi. NSFileProviderItem udávú úroveň ukládání do mezipaměti prostřednictvím polí isDownloaded a isUploaded.

Apple doporučuje konfigurovat politiku ukládání do mezipaměti v závislosti na velikosti souborů: pro obrázky a dokumenty — plné ukládání do mezipaměti, pro video — pouze náhled, pro archivy — na požadání uživatele.

NSFileProviderManager: správa poskytovatele souborů

NSFileProviderManager je centrální tŔída, prostřednictvím které rozšíření komunikuje se systémem. Poskytuje metody pro oznamování změn systému, vytváření nových prvků, správu stahování a zpracování chyb. Každá instance NSFileProviderManager je vázána na konkrétní doménu.

Klíčové metody

signalEnumerator(for:) — oznamuje systému, že se obsah složky změnil a seznam je tŔeba znovu pŔečíst. reimportItem(_:) — znovu importuje uvedený prvek po změně na serveru. registerURLSessionTask:forItemWithIdentifier: — propojuje stahování na pozadí s konkrétním souborem pro sledování průběhu.

Důležité omezení: NSFileProviderManager funguje pouze v procesu rozšíření. Hlavní aplikace nemůže pŔímo volat jeho metody pro správu souborové struktury — synchronizaci musí zahájit rozšíření nebo systém.

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

Správa stahování

Pro stahování souborů na pozadí používá NSFileProviderManager URLSession s konfigurací na pozadí. Rozšíření vytvoří úkol stahování a zaregistruje jej ve správci, který jej propojí s odpovídajícím prvkem. Systém automaticky sleduje průběh a priority stahování v závislosti na aktivitě uživatele.

Implementace File Provider Extension

Vytvoření File Provider Extension začíná pŔidáním nového targetu v Xcode s šablonou File Provider Extension. Xcode automaticky vygeneruje tŔídu dědící z NSFileProviderExtension a minimální sadu metod pro práci s prvky.

NSFileProviderItem a metadata

Každý prvek souborové struktury — soubor nebo složka — implementuje protokol NSFileProviderItem. Protokol definuje povinná pole: itemIdentifier, parentItemIdentifier, filename, typeIdentifier a capabilities. Volitelně lze uést velikost, datum změny a pŔíznaky stahování.

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

Zpracování požadavků na výčet

Metoda enumerator(for:) vrací objekt implementující NSFileProviderEnumerator, který poskytuje obsah složky na požadání systému. iOS může požadovat výčet pro kořenovou složku, podsložky a pracovní sadu — poslední jmenovaná se používá k zobrazení nedávných nebo oblíbených souborů.

Apple doporučuje používat asynchronní metody výčtu se stránkováním prostřednictvím NSFileProviderPage, aby se zabránilo načítání tisíců prvků současně. Stránky o 50–100 prvcích jsou optimální pro výkon.

Domény a architektura více účtů

NSFileProviderDomain je mechanismus pro oddělení různých účtů v rámci jednoho rozšíření. Pokud uživatel autorizoval několik účtů v aplikaci — osobní a firemní Google Drive — každý účet vytvoří samostatnou doménu, která se zobrazí jako samostatný zdroj v aplikaci Soubory.

Každá doména má jedinečný identifikátor, zobrazený název a stav. Uživatel může dočasně zakázat domény nebo je odstranit, aniž by to ovlivnilo ostatní účty. Systém spouští samostatný proces rozšíření pro každou aktivní doménu, což zajišťuje izolaci dat mezi účty.

Podle Apple se doporučuje nevytvářet více než 10 domén na jedno rozšíření — nadměrný počet zpomaluje spouštění aplikace Soubory a zvyšuje spotřebu paměti. Pro služby s velkým počtem účtů je lepší je agregovat do jedné domény s pŔepínáním profilů v rámci rozšíření.

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

Často kladené otázky

Které cloudové služby podporují File Provider Extension?

Každá služba může implementovat vlastní rozšíření. Mezi podporující patří Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive a Nextcloud. Rozšíření je univerzální pro jakékoli úložiště REST nebo WebDAV.

Jak rozšíření synchronizuje změny se serverem?

Rozšíření dostává oznámení od systému o změnách místních souborů a odesílá je na server prostřednictvím NSFileProviderManager. Pro zpětnou synchronizaci ze serveru se používá NSFileProviderSyncAnchor — značka poslední aktualizace.

Může rozšíření pracovat offline?

Ano, pokud jsou soubory lokálně uloženy v mezipaměti. NSFileProviderItem označuje stažené soubory pŔíznakem isDownloaded. Změny provedené v offline režimu jsou automaticky synchronizovány po obnovení spojení.

Jaká omezení existují pro velikost souborů?

Neexistují žádná pŔímá omezení — velikost je určena možnostmi serveru. Apple doporučuje automatické ukládání souborů do mezipaměti do 100 MB a pro větší soubory použití streamovaného stahování s ukazatelem průběhu.

Čím se liší NSFileProviderExtension od UIDocumentPickerViewController?

UIDocumentPickerViewController poskytuje jednorázový výběr souborů prostřednictvím modálního okna. File Provider Extension vkládá trvalý zdroj dokumentů do aplikace Soubory se synchronizací na pozadí a dlouhodobým pŔístupem.

Shrnutí

  • File Provider Extension integruje externí souborové služby do aplikace Soubory, čímž zpŔístupňuje vzdálené dokumenty v jednotném rozhraní
  • Architektura používá NSFileProviderExtension a NSFileProviderManager pro inkrementální synchronizaci dat se serverem
  • NSFileProviderItem pŔedstavuje jednotlivý soubor nebo složku s úplnou sadou metadat a možností
  • Domény (NSFileProviderDomain) poskytují architekturu více účtů s izolací dat mezi účty
  • Mezipaměť na zařízení umožňuje práci se soubory offline s automatickou synchronizací po obnovení spojení
  • Inkrementální synchronizace snižuje provoz o 60–80% ve srovnání s úplným znovunačtením souborové struktury

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také