File Provider Extension är en iOS-mekanism som gör det möjligt för molntjänster och appar att visa sina filer i systemappen Filer. Användaren ser externa dokument i ett enhetligt gränssnitt tillsammans med lokala filer och kan öppna, flytta och redigera dem utan att installera ytterligare programvara. Enligt Apple Developer Documentation (2025) tillhandahåller NSFileProviderManager inkrementell synkronisering och hanterar filversioner via sin egen cache på enheten.
Huvudpunkter
File Provider Extension är en apptillägg som lägger till nya dokumentkällor i appen Filer. En molntjänst — Google Drive, Dropbox, OneDrive eller företagslagring — kan visa sin filstruktur direkt i systemgränssnittet, utan att öppna en separat app.
Användaren arbetar med fjärrfiler precis som med filer som sparats på enheten: bläddrar i mappinnehåll, drar dokument, öppnar dem i valfri kompatibel app och sparar tillbaka ändringar till molnet. Enligt WWDC 2025 stödjer File Provider Extension upp till 1000 samtidiga synkroniseringsoperationer och anpassar sig till nätverkshastigheten genom dynamisk prioriteringshantering.
Tillägget fungerar i bakgrunden — iOS startar det när synkronisering behövs och kan tvångsavsluta det vid resursbrist. Alla operationer måste vara idempotenta och stödja återupptagning från en kontrollpunkt.
File Provider Extension har en trelagersarkitektur: systemprocessen Files.app, provider-tillägget och fjärrservern. Systemet begär data från tillägget, tillägget omvandlar förfrågningarna till API-anrop till molntjänsten och returnerar resultaten via NSFileProviderItem.
Istället för att ladda hela filstrukturen vid varje uppdatering överför tillägget endast ändrade element. NSFileProviderManager tillhandahåller metoder för att skicka inkrementella uppdateringar — ”fil A har lagts till”, ”fil B har ändrats”, ”mapp C har tagits bort”. Detta minskar trafiken drastiskt och snabbar upp visningen av ändringar.
Enligt Apple Engineering minskar inkrementell synkronisering mängden överförd data med 60–80% jämfört med full omladdning. Det rekommenderas att använda NSFileProviderSyncAnchor för att markera synkroniseringsstatusen och minimera dubblettförfrågningar.
File Provider Extension kan cachelagra filer lokalt för offlineåtkomst. När en fil öppnas skickar systemet en begäran till tillägget, tillägget beslutar — att ladda ner innehållet från servern eller returnera den redan cachade versionen. NSFileProviderItem anger cachenivån via fälten isDownloaded och isUploaded.
Apple rekommenderar att konfigurera cachepolicy baserat på filstorlek: för bilder och dokument — full cachelagring, för video — endast förhandsvisning, för arkiv — på användarens begäran.
NSFileProviderManager är den centrala klassen genom vilken tillägget kommunicerar med systemet. Den tillhandahåller metoder för att meddela systemet om ändringar, skapa nya element, hantera nedladdningar och bearbeta fel. Varje instans av NSFileProviderManager är bunden till en specifik domän.
signalEnumerator(for:) — meddelar systemet att innehållet i en mapp har ändrats och listan måste läsas om. reimportItem(_:) — importerar om det angivna elementet efter en ändring på servern. registerURLSessionTask:forItemWithIdentifier: — binder en bakgrundsnedladdning till en specifik fil för att spåra förloppet.
En viktig begränsning: NSFileProviderManager fungerar endast i tilläggets process. Huvudappen kan inte direkt anropa dess metoder för att hantera filstrukturen — synkronisering måste initieras av tillägget eller systemet.
let manager = NSFileProviderManager.default()
manager.signalEnumerator(for: workingSet) { error in
if let error = error {
print("Signal failed: \(error)")
}
}
För att ladda ner filer i bakgrunden använder NSFileProviderManager URLSession med bakgrundskonfiguration. Tillägget skapar en nedladdningsuppgift och registrerar den i hanteraren, som binder den till motsvarande element. Systemet spårar automatiskt nedladdningarnas fortskridande och prioritet baserat på användarens aktivitet.
Att skapa en File Provider Extension börjar med att lägga till en ny target i Xcode med mallen File Provider Extension. Xcode genererar automatiskt en klass som ärver från NSFileProviderExtension och en minimal uppsättning metoder för att arbeta med element.
Varje element i filstrukturen — fil eller mapp — implementerar protokollet NSFileProviderItem. Protokollet definierar obligatoriska fält: itemIdentifier, parentItemIdentifier, filename, typeIdentifier och capabilities. Valfritt kan storlek, ändringsdatum och nedladdningsflaggor anges.
struct CloudItem: NSFileProviderItem {
let itemIdentifier: NSFileProviderItemIdentifier
let parentItemIdentifier: NSFileProviderItemIdentifier
let filename: String
let typeIdentifier: String
let capabilities: NSFileProviderItemCapabilities
let documentSize: NSNumber?
}
Metoden enumerator(for:) returnerar ett objekt som implementerar NSFileProviderEnumerator, som tillhandahåller mappens innehåll på systemets begäran. iOS kan begära uppräkning för rotmappen, undermappar och arbetsuppsättningen — den senare används för att visa senaste eller favoritfiler.
Apple rekommenderar att använda asynkrona uppräkningsmetoder med paginering via NSFileProviderPage för att undvika att ladda tusentals element samtidigt. Sidor med 50–100 element är optimala för prestanda.
NSFileProviderDomain är en mekanism för att separera olika konton inom ett tillägg. Om användaren har auktoriserat flera konton i appen — personligt och företags Google Drive — skapar varje konto en separat domän som visas som en separat källa i appen Filer.
Varje domän har en unik identifierare, ett visningsnamn och en status. Användaren kan tillfälligt inaktivera domäner eller ta bort dem utan att påverka andra konton. Systemet startar en separat tilläggsprocess för varje aktiv domän, vilket säkerställer dataisolering mellan konton.
Enligt Apple rekommenderas att inte skapa fler än 10 domäner per tillägg — ett överdrivet antal saktar ner starten av appen Filer och ökar minnesförbrukningen. För tjänster med många konton är det bättre att samla dem i en domän med profilväxling inom tillägget.
let domain = NSFileProviderDomain(
identifier: "work",
displayName: "Corporate Drive"
)
NSFileProviderManager.add(domain) { error in
if let error = error {
print("Failed to add domain: \(error)")
}
}
Vanliga frågor
Vilken tjänst som helst kan implementera sitt eget tillägg. Bland dem som stödjer finns Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive och Nextcloud. Tillägget är universellt för alla REST- eller WebDAV-lager.
Tillägget får meddelanden från systemet om ändringar i lokala filer och skickar dem till servern via NSFileProviderManager. För omvänd synkronisering från servern används NSFileProviderSyncAnchor — en markör för den senaste uppdateringen.
Ja, om filerna är lokalt cachade. NSFileProviderItem markerar nedladdade filer med flaggan isDownloaded. Ändringar som gjorts i offlineläge synkroniseras automatiskt efter att anslutningen har återställts.
Det finns inga direkta begränsningar — storleken bestäms av serverns kapacitet. Apple rekommenderar automatisk cachelagring av filer upp till 100 MB, och för större filer användning av streamingnedladdning med förloppsindikator.
UIDocumentPickerViewController erbjuder engångsfilval via ett modalt fönster. File Provider Extension bäddar in en permanent dokumentkälla i appen Filer med bakgrundssynkronisering och långsiktig åtkomst.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också