File Provider Extension: mi ez és hogyan működik az iOS fájlszolgáltató

Szerző: IT Sectr Megjelenés: 2026-06-15 Olvasási idő: 9 perc

File Provider Extension egy iOS-mechanizmus, amely lehetővé teszi a felhőszolgáltatások és alkalmazások számára, hogy megjelenítsék fájljaikat a rendszer Fájlok alkalmazásában. A felhasználó a külső dokumentumokat egységes felületen látja a helyiekkel együtt, és megnyithatja, áthelyezheti és szerkesztheti azokat további szoftver telepítése nélkül. Az Apple Developer Documentation (2025) szerint az NSFileProviderManager inkrementális szinkronizálást biztosít és kezeli a fájlváltozatokat a saját gyorsítótárán keresztül az eszközön.

Főbb pontok

  • File Provider Extension integrálja a felhőtárakat és fájlszolgáltatásokat a rendszer Fájlok alkalmazásába iOS-ben
  • Az architektúra a NSFileProviderExtension protokollon és az NSFileProviderManager menedzseren alapul az adatszinkronizáláshoz
  • A bővítmény támogatja az inkrementális szinkronizálást — csak a módosított blokkok kerülnek továbbításra, nem a teljes fájlok
  • Minden fájlt egy NSFileProviderItem objektum képvisel metaadatokkal: méret, módosítás dátuma, tartalom típusa és hozzáférési jogosultságok
  • A tartományok (NSFileProviderDomain) lehetővé teszik különböző fiókok elkülönítését egy bővítményen belül

Mi az a File Provider Extension iOS-ben

File Provider Extension egy alkalmazásbővítmény, amely új dokumentumforrásokat ad a Fájlok alkalmazáshoz. Egy felhőszolgáltatás — Google Drive, Dropbox, OneDrive vagy vállalati tárhely — megjelenítheti fájlstruktúráját közvetlenül a rendszerfelületen, külön alkalmazás megnyitása nélkül.

A felhasználó pontosan úgy dolgozik a távoli fájlokkal, mint az eszközön tároltakkal: tallózza a mappák tartalmát, húzza a dokumentumokat, megnyitja azokat bármely kompatibilis alkalmazásban és visszamenteti a változtatásokat a felhőbe. A WWDC 2025 szerint a File Provider Extension akár 1000 egyidejű szinkronizációs műveletet is támogat, és dinamikus prioritáskezeléssel alkalmazkodik a hálózati sebességhez.

A bővítmény a háttérben működik — az iOS szinkronizálás szüksége esetén indítja el, és erőforráshiány esetén kényszeríthetően leállíthatja. Minden műveletnek idempotensnek kell lennie, és támogatnia kell az ellenőrzőponttól történő folytatást.

Architektúra és fájlszinkronizációs mechanizmus

File Provider Extension háromszintű architektúrával rendelkezik: a Files.app rendszerfolyamat, a szolgáltató-bővítmény és a távoli szerver. A rendszer adatokat kér a bővítménytől, a bővítmény a kéréseket API-hívásokká alakítja a felhőszolgáltatás felé, és az eredményeket az NSFileProviderItem-en keresztül adja vissza.

Inkrementális szinkronizálás

A teljes fájlstruktúra minden frissítéskor történő betöltése helyett a bővítmény csak a módosított elemeket küldi el. Az NSFileProviderManager módszereket biztosít inkrementális frissítések küldéséhez — „A fájl hozzáadva”, „B fájl módosítva”, „C mappa törölve”. Ez drámaian csökkenti a forgalmat és felgyorsítja a változások megjelenítését.

Az Apple Engineering szerint az inkrementális szinkronizálás 60–80%-kal csökkenti a továbbított adatok mennyiségét a teljes újratöltéshez képest. Ajánlott a NSFileProviderSyncAnchor használata a szinkronizációs állapot megjelölésére és a duplikált kérések minimalizálására.

Gyorsítótár az eszközön

File Provider Extension helyileg gyorsítótárazhatja a fájlokat offline eléréshez. Fájl megnyitásakor a rendszer kérést küld a bővítménynek, a bővítmény eldönti — letölti a tartalmat a szerverről, vagy visszaadja a már gyorsítótárazott változatot. Az NSFileProviderItem az isDownloaded és isUploaded mezőkön keresztül jelzi a gyorsítótárazás szintjét.

Az Apple a gyorsítótárazási politika konfigurálását javasolja a fájlmérettől függően: képek és dokumentumok esetén — teljes gyorsítótárazás, videók esetén — csak előnézet, archívumok esetén — a felhasználó kérésére.

NSFileProviderManager: a fájlszolgáltató kezelése

NSFileProviderManager a központi osztály, amelyen keresztül a bővítmény kommunikál a rendszerrel. Módszereket biztosít a rendszer értesítésére a változásokról, új elemek létrehozására, letöltések kezelésére és hibák feldolgozására. Minden NSFileProviderManager példány egy adott tartományhoz van kötve.

Legfontosabb módszerek

signalEnumerator(for:) — értesíti a rendszert, hogy egy mappa tartalma megváltozott és a listát újra kell olvasni. reimportItem(_:) — újraimportálja a megadott elemet a szerveren történt változás után. registerURLSessionTask:forItemWithIdentifier: — háttérletöltést köt egy adott fájlhoz az előrehaladás követéséhez.

Fontos korlátozás: az NSFileProviderManager csak a bővítmény folyamatában működik. A fő alkalmazás nem hívhatja meg közvetlenül a módszereit a fájlstruktúra kezeléséhez — a szinkronizálást a bővítménynek vagy a rendszernek kell kezdeményeznie.

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

Letöltések kezelése

Fájlok háttérben történő letöltéséhez az NSFileProviderManager a URLSession-t használja háttérkonfigurációval. A bővítmény létrehoz egy letöltési feladatot és regisztrálja a menedzserben, amely a megfelelő elemhez köti. A rendszer automatikusan követi a letöltések előrehaladását és prioritásait a felhasználói aktivitástól függően.

A File Provider Extension megvalósítása

A File Provider Extension létrehozása új target Xcode-ban történő hozzáadásával kezdődik a File Provider Extension sablonnal. Az Xcode automatikusan generál egy osztályt, amely a NSFileProviderExtension-ből öröklődik, és egy minimális módszerkészletet az elemekkel való munkához.

NSFileProviderItem és metaadatok

A fájlstruktúra minden eleme — fájl vagy mappa — megvalósítja a NSFileProviderItem protokollt. A protokoll meghatározza a kötelező mezőket: itemIdentifier, parentItemIdentifier, filename, typeIdentifier és capabilities. Opcionálisan megadható a méret, a módosítás dátuma és a letöltési jelzők.

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

Számlálási kérések feldolgozása

Az enumerator(for:) metódus egy NSFileProviderEnumerator-t megvalósító objektumot ad vissza, amely a mappa tartalmát szolgáltatja a rendszer kérésére. Az iOS kérhet számlálást a gyökérmappához, almappákhoz és a munkakészlethez — ez utóbbi a legutóbbi vagy kedvenc fájlok megjelenítésére szolgál.

Az Apple az aszinkron számlálási módszerek használatát javasolja lapozással az NSFileProviderPage-en keresztül, hogy elkerülje ezrek egyidejű betöltését. Az 50–100 elemből álló oldalak optimálisak a teljesítményhez.

Tartományok és többfiókos architektúra

NSFileProviderDomain a különböző fiókok elkülönítésének mechanizmusa egy bővítményen belül. Ha a felhasználó több fiókot hitelesített az alkalmazásban — személyes és vállalati Google Drive — minden fiók külön tartományt hoz létre, amely külön forrásként jelenik meg a Fájlok alkalmazásban.

Minden tartomány egyedi azonosítóval, megjelenített névvel és állapottal rendelkezik. A felhasználó ideiglenesen letilthatja vagy törőlheti a tartományokat anélkül, hogy ez más fiókokat érintene. A rendszer külön bővítményfolyamatot indít minden aktív tartományhoz, biztosítva az adatok elkülönítését a fiókok között.

Az Apple szerint nem ajánlott 10-nél több tartományt létrehozni bővítményenként — a túlzott szám lelassítja a Fájlok alkalmazás indítását és növeli a memóriahasználatot. A sok fiókkal rendelkező szolgáltatások esetén jobb őket egyetlen tartományba aggregálni profilváltással a bővítményen belül.

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

Gyakran ismételt kérdések

Mely felhőszolgáltatások támogatják a File Provider Extension-t?

Bármely szolgáltatás megvalósíthatja saját bővítményét. A támogatók között van a Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive és Nextcloud. A bővítmény univerzális bármely REST vagy WebDAV tárhelyhez.

Hogyan szinkronizálja a bővítmény a változásokat a szerverrel?

A bővítmény értesítéseket kap a rendszertől a helyi fájlváltozásokról, és elküldi azokat a szerverre az NSFileProviderManager-en keresztül. A szerverről történő visszirányú szinkronizáláshoz az NSFileProviderSyncAnchor — az utolsó frissítés jelölője — használható.

Működhet a bővítmény offline módban?

Igen, ha a fájlok helyileg gyorsítótárazva vannak. Az NSFileProviderItem a letöltött fájlokat az isDownloaded jelzővel jelöli. Az offline módban végrehajtott változtatások automatikusan szinkronizálódnak a kapcsolat helyreállítása után.

Milyen korlátozások vannak a fájlméretre vonatkozóan?

Nincsenek közvetlen korlátozások — a méretet a szerver képességei határozzák meg. Az Apple a fájlok automatikus gyorsítótárazását javasolja 100 MB-ig, a nagyobb fájlok esetén pedig streaming letöltést előrehaladási sávval.

Miben különbözik az NSFileProviderExtension az UIDocumentPickerViewController-től?

Az UIDocumentPickerViewController egyszeri fájlválasztást biztosít egy modális ablakon keresztül. A File Provider Extension állandó dokumentumforrást ágyaz be a Fájlok alkalmazásba háttérszinkronizálással és hosszú távú hozzáféréssel.

Összegzés

  • File Provider Extension integrálja a külső fájlszolgáltatásokat a Fájlok alkalmazásba, elérhetővé téve a távoli dokumentumokat egységes felületen
  • Az architektúra a NSFileProviderExtension-t és az NSFileProviderManager-t használja a szerverrel történő inkrementális adatszinkronizáláshoz
  • Az NSFileProviderItem egyedi fájlt vagy mappát képvisel teljes metaadat- és képességkészlettel
  • A tartományok (NSFileProviderDomain) többfiókos architektúrát biztosítanak adatelkülönítéssel a fiókok között
  • Az eszközön történő gyorsítótárazás lehetővé teszi a fájlokkal való offline munkát automatikus szinkronizálással a kapcsolat helyreállítása után
  • Az inkrementális szinkronizálás 60–80%-kal csökkenti a forgalmat a fájlstruktúra teljes újratöltéséhez képest

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is