File Provider Extension: шта је то и како ради иОС пружалац датотека

Аутор: IT Sectr Објављено: 2026-06-15 Време читања: 9 мин

File Provider Extension је механизам iOS који омогућуће сервисима у облаци и апликацијама да прикажу своје датотеке у системској апликацији Фајлови. Корисник види спољне документе у јединственом интерфејсу заједно са локалнима и може да их отвара, премешта и уређује без инсталације додатног софтвера. Према Apple Developer Documentation (2025), NSFileProviderManager обезбеђује инкременталну синхронизацију и управља верзијама датотека путем сопственог кеша на уређају.

Главно

  • File Provider Extension интегрише складишта у облаци и сервисе за датотеке у системску апликацију Фајлови на iOS-у
  • Архитектура се заснива на протоколу NSFileProviderExtension и менаџеру NSFileProviderManager за синхронизацију података
  • Екстензија подржава инкременталну синхронизацију — преносе се само измењени блокови, а не целе датотеке
  • Свака датотека је представљена објектом NSFileProviderItem са метаподацима: величина, датум промене, тип садржаја и права приступа
  • Домени (NSFileProviderDomain) омогућућу одвајање различитих налога у оквиру једне екстензије

Шта је File Provider Extension у iOS

File Provider Extension је екстензија апликације која додаје нове изворе докумената у апликацију Фајлови. Сервис у облаци — Google Drive, Dropbox, OneDrive или корпоративно складиште — може да прикаже своју структуру датотека директно у системском интерфејсу, без отварања посебне апликације.

Корисник ради са удаљеним датотекама потпуно исто као са онима сачуваним на уређају: прегледа садржај фолдера, превлачи документе, отвара их у било којој компатибилној апликацији и чува промене назад у облак. Према WWDC 2025, File Provider Extension подржава до 1000 истовремених синхронизационих операција и прилагоґава се брзини мреже кроз динамичко управљање приоритетима.

Екстензија ради у позадини — iOS је покреће када је потребна синхронизација и може да је принудно заустави при недостатку ресурса. Све операције морају бити идемпотентне и подржавати наставак од контролне тачке.

Архитектура и механизам синхронизације датотека

File Provider Extension има трослојну архитектуру: системски процес Files.app, екстензију-пружаоца и удаљени сервер. Систем захтева податке од екстензије, екстензија претвара захтеве у API позиве сервиса у облаци и враћа резултате кроз NSFileProviderItem.

Инкрементална синхронизација

Уместо учитавања целокупне структуре датотека при сваком ажурирању, екстензија преноси само измењене елементе. NSFileProviderManager пружа методе за слање инкременталних ажурирања — „датотека A је додата“, „датотека B је измењена“, „фолдер C је обрисан“. Ово драстично смањује саобраћај и убрзава приказивање промена.

Према Apple Engineering, инкрементална синхронизација смањује обим пренетих података за 60–80% у поређењу са потпуним поновним учитавањем. Препоручује се коришћење NSFileProviderSyncAnchor за означавање стања синхронизације и минимизацију дупликатних захтева.

Кеширање на уређају

File Provider Extension може да кешира датотеке локално за офлајн приступ. При отварању датотеке, систем шаље захтев екстензији, екстензија одлучује — да преузме садржај са сервера или да врати већ кеширану верзију. NSFileProviderItem показује ниво кеширања кроз поља isDownloaded и isUploaded.

Apple препоручује конфигурисање политике кеширања у зависности од величине датотека: за слике и документе — потпуно кеширање, за видео — само преглед, за архиве — на захтев корисника.

NSFileProviderManager: управљање пружаоцем датотека

NSFileProviderManager је централна класа кроз коју екстензија комуницира са системом. Она пружа методе за обавештавање система о променама, креирање нових елемената, управљање преузимањима и обраду грешака. Свака инстанца NSFileProviderManager је везана за одређени домен.

Кључне методе

signalEnumerator(for:) — обавештава систем да се садржај фолдера променио и да листу треба поново прочитати. reimportItem(_:) — поново увози наведени елеменат након промене на серверу. registerURLSessionTask:forItemWithIdentifier: — повезује преузимање у позадини са одређеном датотеком за праћење напретка.

Важно ограничење: NSFileProviderManager ради само у процесу екстензије. Главна апликација не може директно да позива њене методе за управљање структуром датотека — синхронизацију мора да покрене екстензија или систем.

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

Управљање преузимањима

За преузимање датотека у позадини, NSFileProviderManager користи URLSession са конфигурацијом за позадину. Екстензија креира задатак преузимања и региструје га у менаџеру, који га повезује са одговарајућим елементом. Систем аутоматски прати напредак и приоритете преузимања у зависности од активности корисника.

Имплементација File Provider Extension

Креирање File Provider Extension почиње додавањем новог target-а у Xcode са шаблоном File Provider Extension. Xcode аутоматски генерише класу која насљеђује NSFileProviderExtension и минималан скуп метода за рад са елементима.

NSFileProviderItem и метаподаци

Сваки елеменат структуре датотека — датотека или фолдер — имплементира протокол NSFileProviderItem. Протокол дефинише обавезна поља: itemIdentifier, parentItemIdentifier, filename, typeIdentifier и capabilities. Опционално се могу навести величина, датум промене и флагови преузимања.

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

Обрада захтева за набрајање

Метода enumerator(for:) враћа објекат који имплементира NSFileProviderEnumerator, који пружа садржај фолдера на захтев система. iOS може да захтева набрајање за коренски фолдер, подфолдере и радни скуп — посљедњи се користи за приказивање недавних или омиљених датотека.

Apple препоручује коришћење асинхроних метода набрајања са пагинацијом кроз NSFileProviderPage да би се избегло учитавање хиљада елемената истовремено. Странице од 50–100 елемената су оптималне за перформансе.

Домени и вишеналоговска архитектура

NSFileProviderDomain је механизам за одвајање различитих налога у оквиру једне екстензије. Ако је корисник ауторизовао више налога у апликацији — лични и корпоративни Google Drive — сваки налог креира посебан домен који се приказује као засебни извор у апликацији Фајлови.

Сваки домен има јединствени идентификатор, назив за приказ и стање. Корисник може привремено да онемогући домене или да их обрише без утицаја на друге налоге. Систем покреће посебан процес екстензије за сваки активан домен, што осигурава изолацију података између налога.

Према Apple-у, препоручује се да се не креира више од 10 домена по једној екстензији — прекомеран број успорава покретање апликације Фајлови и повећава потрошњу меморије. За сервисе са великим бројем налога, боље је агрегирати их у један домен са пребацивањем профила у оквиру екстензије.

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

Често постављана питања

Који сервиси у облаци подржавају File Provider Extension?

Сваки сервис може да имплементира сопствену екстензију. Међу онима који подржавају су Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive и Nextcloud. Екстензија је универзална за свако REST или WebDAV складиште.

Како екстензија синхронизује промене са сервером?

Екстензија добија обавештења од система о променама локалних датотека и шаље их на сервер кроз NSFileProviderManager. За повратну синхронизацију са сервера користи се NSFileProviderSyncAnchor — маркер посљедњег ажурирања.

Може ли екстензија да ради офлајн?

Да, ако су датотеке локално кеширане. NSFileProviderItem означава преузете датотеке флагом isDownloaded. Промене начињене у офлајн моду синхронизују се аутоматски након поновног успостављања везе.

Која ограничења постоје у погледу величине датотека?

Нема директних ограничења — величина је одређена могућностима сервера. Apple препоручује аутоматско кеширање датотека до 100 MB, а за веће датотеке коришћење стримованог преузимања са траком напретка.

По чему се разликује NSFileProviderExtension од UIDocumentPickerViewController?

UIDocumentPickerViewController пружа једнократни избор датотека кроз модални прозор. File Provider Extension уграђује стални извор докумената у апликацију Фајлови са синхронизацијом у позадини и дугорочним приступом.

Закључак

  • File Provider Extension интегрише спољне сервисе за датотеке у апликацију Фајлови, чинећи удаљене документе доступним у јединственом интерфејсу
  • Архитектура користи NSFileProviderExtension и NSFileProviderManager за инкременталну синхронизацију података са сервером
  • NSFileProviderItem представља појединачну датотеку или фолдер са потпуним скупом метаподатака и могућностима
  • Домени (NSFileProviderDomain) омогућућу вишеналоговску архитектуру са изолацијом података између налога
  • Кеширање на уређају омогућуће рад са датотекама офлајн са аутоматском синхронизацијом након поновног успостављања везе
  • Инкрементална синхронизација смањује саобраћај за 60–80% у поређењу са потпуним поновним учитавањем структуре датотека

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође