File Provider Extension: wat is het en hoe werkt de iOS-bestandsprovider

Auteur: IT Sectr Gepubliceerd: 2026-06-15 Leestijd: 9 min

File Provider Extension is een iOS-mechanisme waarmee clouddiensten en apps hun bestanden kunnen weergeven in de systeemapp Bestanden. De gebruiker ziet externe documenten in een uniforme interface op dezelfde manier als lokale bestanden en kan ze openen, verplaatsen en bewerken zonder extra software te installeren. Volgens Apple Developer Documentation (2025) zorgt NSFileProviderManager voor incrementele synchronisatie en beheert het bestandsversies via een eigen cache op het apparaat.

Belangrijkste punten

  • File Provider Extension integreert cloudopslag en bestandsdiensten in de systeemapp Bestanden op iOS
  • De architectuur is gebaseerd op het NSFileProviderExtension-protocol en de NSFileProviderManager voor gegevenssynchronisatie
  • De extensie ondersteunt incrementele synchronisatie — alleen gewijzigde blokken worden verzonden, niet volledige bestanden
  • Elk bestand wordt weergegeven door een NSFileProviderItem-object met metadata: grootte, wijzigingsdatum, inhoudstype en toegangsrechten
  • Domeinen (NSFileProviderDomain) maken het mogelijk om verschillende accounts binnen één extensie te scheiden

Wat is File Provider Extension in iOS

File Provider Extension is een app-extensie die nieuwe documentbronnen toevoegt aan de app Bestanden. Een clouddienst — Google Drive, Dropbox, OneDrive of een bedrijfsopslag — kan zijn bestandsstructuur direct in de systeeminterface weergeven, zonder een aparte app te openen.

De gebruiker werkt met externe bestanden op precies dezelfde manier als met lokaal opgeslagen bestanden: bekijkt de inhoud van mappen, sleept documenten, opent ze in elke compatibele app en slaat wijzigingen terug op in de cloud. Volgens WWDC 2025 ondersteunt File Provider Extension tot 1000 gelijktijdige synchronisatiebewerkingen en past het zich aan de netsnelheid aan via dynamisch prioriteitsbeheer.

De extensie werkt op de achtergrond — iOS start deze wanneer synchronisatie nodig is en kan deze geforceerd beëindigen bij gebrek aan resources. Alle bewerkingen moeten idempotent zijn en hervatting vanaf een controlepunt ondersteunen.

Architectuur en het mechanisme voor bestandssynchronisatie

File Provider Extension heeft een drielaagse architectuur: het systeemproces Files.app, de provider-extensie en de externe server. Het systeem vraagt gegevens op bij de extensie, de extensie zet verzoeken om in API-aanroepen van de clouddienst en retourneert resultaten via NSFileProviderItem.

Incrementele synchronisatie

In plaats van de volledige bestandsstructuur te laden bij elke update, verzendt de extensie alleen gewijzigde elementen. NSFileProviderManager biedt methoden voor het verzenden van incrementele updates — „bestand A is toegevoegd”, „bestand B is gewijzigd”, „map C is verwijderd”. Dit vermindert het dataverkeer drastisch en versnelt het tonen van wijzigingen.

Volgens Apple Engineering vermindert incrementele synchronisatie de hoeveelheid verzonden gegevens met 60–80% vergeleken met volledig herladen. Het wordt aanbevolen om NSFileProviderSyncAnchor te gebruiken voor het markeren van de synchronisatiestatus en het minimaliseren van dubbele verzoeken.

Caching op het apparaat

File Provider Extension kan bestanden lokaal cachen voor offline toegang. Bij het openen van een bestand doet het systeem een verzoek aan de extensie, de extensie beslist — de inhoud van de server downloaden of de reeds gecachte versie retourneren. NSFileProviderItem geeft het cacheniveau aan via de velden isDownloaded en isUploaded.

Apple raadt aan om het cachebeleid te configureren op basis van de bestandsgrootte: voor afbeeldingen en documenten — volledige caching, voor video — alleen voorbeeld, voor archieven — op verzoek van de gebruiker.

NSFileProviderManager: beheer van de bestandsprovider

NSFileProviderManager is de centrale klasse waarmee de extensie met het systeem communiceert. Het biedt methoden voor het melden van wijzigingen aan het systeem, het maken van nieuwe elementen, het beheren van downloads en het afhandelen van fouten. Elk exemplaar van NSFileProviderManager is gekoppeld aan een specifiek domein.

Belangrijkste methoden

signalEnumerator(for:) — meldt het systeem dat de inhoud van een map is gewijzigd en de lijst opnieuw moet worden gelezen. reimportItem(_:) — importeert het opgegeven element opnieuw na een wijziging op de server. registerURLSessionTask:forItemWithIdentifier: — koppelt een achtergronddownload aan een specifiek bestand om de voortgang te volgen.

Een belangrijke beperking: NSFileProviderManager werkt alleen in het proces van de extensie. De hoofdapp kan de methoden niet rechtstreeks aanroepen om de bestandsstructuur te beheren — synchronisatie moet worden gestart door de extensie of het systeem.

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

Downloadbeheer

Voor het downloaden van bestanden op de achtergrond gebruikt NSFileProviderManager URLSession met een achtergrondconfiguratie. De extensie maakt een downloadtaak en registreert deze in de manager, die deze koppelt aan het overeenkomstige element. Het systeem volgt automatisch de voortgang en prioriteiten van downloads op basis van de gebruikersactiviteit.

Implementatie van File Provider Extension

Het maken van een File Provider Extension begint met het toevoegen van een nieuwe target in Xcode met de sjabloon File Provider Extension. Xcode genereert automatisch een klasse die overerft van NSFileProviderExtension en een minimale set methoden voor het werken met elementen.

NSFileProviderItem en metadata

Elk element van de bestandsstructuur — bestand of map — implementeert het protocol NSFileProviderItem. Het protocol definieert de verplichte velden: itemIdentifier, parentItemIdentifier, filename, typeIdentifier en capabilities. Optioneel kunnen grootte, wijzigingsdatum en downloadvlaggen worden opgegeven.

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

Afhandeling van enumeratieverzoeken

De methode enumerator(for:) retourneert een object dat NSFileProviderEnumerator implementeert, dat de inhoud van een map levert op verzoek van het systeem. iOS kan enumeratie aanvragen voor de hoofdmap, submappen en de werkset — deze laatste wordt gebruikt voor het weergeven van recente of favoriete bestanden.

Apple raadt aan om asynchrone enumeratiemethoden met paginering via NSFileProviderPage te gebruiken om te voorkomen dat duizenden elementen tegelijk worden geladen. Pagina’s van 50–100 elementen zijn optimaal voor prestaties.

Domeinen en multi-account architectuur

NSFileProviderDomain is een mechanisme voor het scheiden van verschillende accounts binnen één extensie. Als de gebruiker meerdere accounts heeft geautoriseerd in de app — persoonlijk en zakelijk Google Drive — maakt elk account een apart domein aan, dat wordt weergegeven als een aparte bron in de app Bestanden.

Elk domein heeft een unieke identificatie, een weergavenaam en een status. De gebruiker kan domeinen tijdelijk uitschakelen of verwijderen zonder andere accounts te beïnvloeden. Het systeem start een apart extensieproces voor elk actief domein, wat gegevensisolatie tussen accounts garandeert.

Volgens Apple wordt aanbevolen om niet meer dan 10 domeinen per extensie te maken — een overmatig aantal vertraagt het starten van de app Bestanden en verhoogt het geheugengebruik. Voor diensten met een groot aantal accounts is het beter om deze te aggregeren in één domein met profielschakeling binnen de extensie.

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

Veelgestelde vragen

Welke clouddiensten ondersteunen File Provider Extension?

Elke dienst kan een eigen extensie implementeren. Tot de ondersteunende behoren Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive en Nextcloud. De extensie is universeel voor elke REST- of WebDAV-opslag.

Hoe synchroniseert de extensie wijzigingen met de server?

De extensie ontvangt meldingen van het systeem over wijzigingen in lokale bestanden en stuurt deze naar de server via NSFileProviderManager. Voor terugwaartse synchronisatie vanaf de server wordt NSFileProviderSyncAnchor gebruikt — een marker van de laatste update.

Kan de extensie offline werken?

Ja, als bestanden lokaal zijn gecachet. NSFileProviderItem markeert gedownloade bestanden met de vlag isDownloaded. Wijzigingen die in de offline modus zijn aangebracht, worden automatisch gesynchroniseerd na herstel van de verbinding.

Welke beperkingen zijn er voor bestandsgroottes?

Er zijn geen directe beperkingen — de grootte wordt bepaald door de mogelijkheden van de server. Apple raadt aan om bestanden tot 100 MB automatisch te cachen en voor grotere bestanden streaming download met een voortgangsbalk te gebruiken.

Wat is het verschil tussen NSFileProviderExtension en UIDocumentPickerViewController?

UIDocumentPickerViewController biedt een eenmalige bestandsselectie via een modaal venster. File Provider Extension plaatst een permanente documentbron in de app Bestanden met achtergrondsynchronisatie en langdurige toegang.

Samenvatting

  • File Provider Extension integreert externe bestandsdiensten in de app Bestanden, waardoor externe documenten toegankelijk worden in een uniforme interface
  • De architectuur gebruikt NSFileProviderExtension en NSFileProviderManager voor incrementele gegevenssynchronisatie met de server
  • NSFileProviderItem vertegenwoordigt een afzonderlijk bestand of map met een volledige set metadata en mogelijkheden
  • Domeinen (NSFileProviderDomain) zorgen voor een multi-account architectuur met gegevensisolatie tussen accounts
  • Caching op het apparaat maakt offline werken met bestanden mogelijk met automatische synchronisatie na herstel van de verbinding
  • Incrementele synchronisatie vermindert het dataverkeer met 60–80% vergeleken met volledig herladen van de bestandsstructuur

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook