File Provider Extension adalah mekanisme iOS yang memungkinkan layanan cloud dan aplikasi untuk menampilkan file mereka di aplikasi sistem File. Pengguna melihat dokumen eksternal dalam antarmuka terpadu bersama dengan file lokal dan dapat membuka, memindahkan, dan mengeditnya tanpa menginstal perangkat lunak tambahan. Menurut Apple Developer Documentation (2025), NSFileProviderManager menyediakan sinkronisasi inkremental dan mengelola versi file melalui cache sendiri di perangkat.
Poin Penting
File Provider Extension adalah ekstensi aplikasi yang menambahkan sumber dokumen baru ke aplikasi File. Layanan cloud — Google Drive, Dropbox, OneDrive atau penyimpanan perusahaan — dapat menampilkan struktur file mereka langsung di antarmuka sistem, tanpa membuka aplikasi terpisah.
Pengguna bekerja dengan file jarak jauh persis seperti dengan file yang disimpan di perangkat: melihat isi folder, menyeret dokumen, membukanya di aplikasi kompatibel mana pun dan menyimpan perubahan kembali ke cloud. Menurut WWDC 2025, File Provider Extension mendukung hingga 1000 operasi sinkronisasi simultan dan beradaptasi dengan kecepatan jaringan melalui manajemen prioritas dinamis.
Ekstensi bekerja di latar belakang — iOS menjalankannya saat sinkronisasi diperlukan dan dapat mengakhirinya secara paksa saat sumber daya tidak mencukupi. Semua operasi harus idempoten dan mendukung kelanjutan dari titik pemeriksaan.
File Provider Extension memiliki arsitektur tiga tingkat: proses sistem Files.app, ekstensi-penyedia dan server jarak jauh. Sistem meminta data dari ekstensi, ekstensi mengubah permintaan menjadi panggilan API layanan cloud dan mengembalikan hasil melalui NSFileProviderItem.
Alih-alih memuat seluruh struktur file setiap kali diperbarui, ekstensi hanya mengirimkan elemen yang diubah. NSFileProviderManager menyediakan metode untuk mengirim pembaruan inkremental — “file A ditambahkan”, “file B diubah”, “folder C dihapus”. Ini secara drastis mengurangi lalu lintas dan mempercepat tampilan perubahan.
Menurut Apple Engineering, sinkronisasi inkremental mengurangi volume data yang dikirim sebesar 60–80% dibandingkan dengan pemuatan ulang penuh. Disarankan untuk menggunakan NSFileProviderSyncAnchor untuk menandai status sinkronisasi dan meminimalkan permintaan duplikat.
File Provider Extension dapat menyimpan file secara lokal dalam cache untuk akses offline. Saat membuka file, sistem mengirimkan permintaan ke ekstensi, ekstensi memutuskan — mengunduh konten dari server atau mengembalikan versi yang sudah di-cache. NSFileProviderItem menunjukkan tingkat caching melalui bidang isDownloaded dan isUploaded.
Apple merekomendasikan untuk mengonfigurasi kebijakan caching tergantung pada ukuran file: untuk gambar dan dokumen — caching penuh, untuk video — hanya pratinjau, untuk arsip — atas permintaan pengguna.
NSFileProviderManager adalah kelas pusat yang digunakan ekstensi untuk berkomunikasi dengan sistem. Ini menyediakan metode untuk memberi tahu sistem tentang perubahan, membuat elemen baru, mengelola unduhan dan menangani kesalahan. Setiap instance NSFileProviderManager terikat pada domain tertentu.
signalEnumerator(for:) — memberi tahu sistem bahwa isi folder telah berubah dan daftar perlu dibaca ulang. reimportItem(_:) — mengimpor ulang elemen yang ditentukan setelah perubahan di server. registerURLSessionTask:forItemWithIdentifier: — mengikat unduhan latar belakang ke file tertentu untuk melacak kemajuan.
Batasan penting: NSFileProviderManager hanya bekerja di dalam proses ekstensi. Aplikasi utama tidak dapat langsung memanggil metodenya untuk mengelola struktur file — sinkronisasi harus dimulai oleh ekstensi atau sistem.
let manager = NSFileProviderManager.default()
manager.signalEnumerator(for: workingSet) { error in
if let error = error {
print("Signal failed: \(error)")
}
}
Untuk mengunduh file di latar belakang, NSFileProviderManager menggunakan URLSession dengan konfigurasi latar belakang. Ekstensi membuat tugas unduhan dan mendaftarkannya di manajer, yang mengikatnya ke elemen yang sesuai. Sistem secara otomatis melacak kemajuan dan prioritas unduhan berdasarkan aktivitas pengguna.
Membuat File Provider Extension dimulai dengan menambahkan target baru di Xcode dengan templat File Provider Extension. Xcode secara otomatis menghasilkan kelas yang mewarisi NSFileProviderExtension dan serangkaian metode minimal untuk bekerja dengan elemen.
Setiap elemen struktur file — file atau folder — mengimplementasikan protokol NSFileProviderItem. Protokol mendefinisikan bidang wajib: itemIdentifier, parentItemIdentifier, filename, typeIdentifier dan capabilities. Secara opsional dapat ditentukan ukuran, tanggal perubahan dan bendera unduhan.
struct CloudItem: NSFileProviderItem {
let itemIdentifier: NSFileProviderItemIdentifier
let parentItemIdentifier: NSFileProviderItemIdentifier
let filename: String
let typeIdentifier: String
let capabilities: NSFileProviderItemCapabilities
let documentSize: NSNumber?
}
Metode enumerator(for:) mengembalikan objek yang mengimplementasikan NSFileProviderEnumerator, yang menyediakan isi folder atas permintaan sistem. iOS dapat meminta enumerasi untuk folder root, subfolder dan set kerja — yang terakhir digunakan untuk menampilkan file terbaru atau favorit.
Apple merekomendasikan penggunaan metode enumerasi asinkron dengan penomoran halaman melalui NSFileProviderPage untuk menghindari memuat ribuan elemen sekaligus. Halaman 50–100 elemen optimal untuk kinerja.
NSFileProviderDomain adalah mekanisme untuk memisahkan akun yang berbeda dalam satu ekstensi. Jika pengguna telah mengotorisasi beberapa akun di aplikasi — pribadi dan perusahaan Google Drive — setiap akun membuat domain terpisah yang ditampilkan sebagai sumber terpisah di aplikasi File.
Setiap domain memiliki pengidentifikasi unik, nama tampilan dan status. Pengguna dapat menonaktifkan sementara domain atau menghapusnya tanpa memengaruhi akun lain. Sistem menjalankan proses ekstensi terpisah untuk setiap domain aktif, memastikan isolasi data antar akun.
Menurut Apple, disarankan untuk tidak membuat lebih dari 10 domain per ekstensi — jumlah berlebihan memperlambat startup aplikasi File dan meningkatkan konsumsi memori. Untuk layanan dengan banyak akun, lebih baik menggabungkannya ke dalam satu domain dengan peralihan profil di dalam ekstensi.
let domain = NSFileProviderDomain(
identifier: "work",
displayName: "Corporate Drive"
)
NSFileProviderManager.add(domain) { error in
if let error = error {
print("Failed to add domain: \(error)")
}
}
Pertanyaan Umum
Layanan apa pun dapat mengimplementasikan ekstensinya sendiri. Di antara yang mendukung adalah Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive dan Nextcloud. Ekstensi ini universal untuk penyimpanan REST atau WebDAV apa pun.
Ekstensi menerima notifikasi dari sistem tentang perubahan file lokal dan mengirimkannya ke server melalui NSFileProviderManager. Untuk sinkronisasi balik dari server digunakan NSFileProviderSyncAnchor — penanda pembaruan terakhir.
Ya, jika file di-cache secara lokal. NSFileProviderItem menandai file yang diunduh dengan bendera isDownloaded. Perubahan yang dilakukan dalam mode offline disinkronkan secara otomatis setelah koneksi dipulihkan.
Tidak ada batasan langsung — ukuran ditentukan oleh kemampuan server. Apple merekomendasikan caching otomatis file hingga 100 MB, dan untuk file yang lebih besar menggunakan unduhan streaming dengan bilah kemajuan.
UIDocumentPickerViewController menyediakan pemilihan file satu kali melalui jendela modal. File Provider Extension menanamkan sumber dokumen permanen ke dalam aplikasi File dengan sinkronisasi latar belakang dan akses jangka panjang.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga