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 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.
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.
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.
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 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.
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.
let manager = NSFileProviderManager.default()
manager.signalEnumerator(for: workingSet) { error in
if let error = error {
print("Signal failed: \(error)")
}
}
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.
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.
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.
struct CloudItem: NSFileProviderItem {
let itemIdentifier: NSFileProviderItemIdentifier
let parentItemIdentifier: NSFileProviderItemIdentifier
let filename: String
let typeIdentifier: String
let capabilities: NSFileProviderItemCapabilities
let documentSize: NSNumber?
}
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.
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.
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
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.
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.
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.
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.
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
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.
Lees ook