File Provider Extension: apa itu dan cara kerja penyedia file iOS

Penulis: IT Sectr Diterbitkan: 2026-06-15 Waktu membaca: 9 mnt

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 mengintegrasikan penyimpanan cloud dan layanan file ke dalam aplikasi sistem File di iOS
  • Arsitektur didasarkan pada protokol NSFileProviderExtension dan manajer NSFileProviderManager untuk sinkronisasi data
  • Ekstensi mendukung sinkronisasi inkremental — hanya blok yang diubah yang dikirim, bukan file lengkap
  • Setiap file diwakili oleh objek NSFileProviderItem dengan metadata: ukuran, tanggal perubahan, jenis konten dan hak akses
  • Domain (NSFileProviderDomain) memungkinkan pemisahan akun yang berbeda dalam satu ekstensi

Apa itu File Provider Extension di iOS

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.

Arsitektur dan mekanisme sinkronisasi file

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.

Sinkronisasi inkremental

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.

Caching di perangkat

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: mengelola penyedia file

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.

Metode utama

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.

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

Manajemen unduhan

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.

Implementasi File Provider Extension

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.

NSFileProviderItem dan metadata

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.

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

Penanganan permintaan enumerasi

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.

Domain dan arsitektur multi-akun

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.

swift
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 cloud apa saja yang mendukung File Provider Extension?

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.

Bagaimana ekstensi menyinkronkan perubahan dengan server?

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.

Bisakah ekstensi bekerja secara offline?

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.

Batasan apa yang ada untuk ukuran file?

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.

Apa perbedaan NSFileProviderExtension dengan UIDocumentPickerViewController?

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

  • File Provider Extension mengintegrasikan layanan file eksternal ke dalam aplikasi File, membuat dokumen jarak jauh tersedia dalam antarmuka terpadu
  • Arsitektur menggunakan NSFileProviderExtension dan NSFileProviderManager untuk sinkronisasi data inkremental dengan server
  • NSFileProviderItem mewakili file atau folder individu dengan serangkaian metadata dan kemampuan lengkap
  • Domain (NSFileProviderDomain) menyediakan arsitektur multi-akun dengan isolasi data antar akun
  • Caching di perangkat memungkinkan bekerja dengan file offline dengan sinkronisasi otomatis setelah koneksi dipulihkan
  • Sinkronisasi inkremental mengurangi lalu lintas sebesar 60–80% dibandingkan dengan pemuatan ulang penuh struktur file

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.

Diskusikan proyek

Baca juga