File Provider Extension es un mecanismo de iOS que permite a los servicios en la nube y aplicaciones mostrar sus archivos en la aplicación Archivos del sistema. El usuario ve documentos externos en una interfaz unificada junto con los locales y puede abrirlos, moverlos y editarlos sin instalar software adicional. Según la documentación para desarrolladores de Apple (2025), NSFileProviderManager proporciona sincronización incremental y gestiona las versiones de archivos a través de su propio caché en el dispositivo.
Puntos clave
File Provider Extension es una extensión de aplicación que añade nuevas fuentes de documentos a la aplicación Archivos. Un servicio en la nube — Google Drive, Dropbox, OneDrive o un almacenamiento corporativo — puede mostrar su estructura de archivos directamente en la interfaz del sistema, sin abrir una aplicación separada.
Los usuarios trabajan con archivos remotos igual que con los archivos guardados en el dispositivo: navegan por el contenido de las carpetas, arrastran y sueltan documentos, los abren en cualquier aplicación compatible y guardan los cambios de vuelta en la nube. Según WWDC 2025, File Provider Extension admite hasta 1000 operaciones de sincronización simultáneas y se adapta a la velocidad de la red mediante la gestión dinámica de prioridades.
La extensión funciona en segundo plano — iOS la inicia cuando es necesaria la sincronización y puede terminarla forzosamente cuando los recursos son escasos. Todas las operaciones deben ser idempotentes y admitir la reanudación desde un punto de control.
File Provider Extension tiene una arquitectura de tres niveles: el proceso del sistema Files.app, la extensión proveedora y el servidor remoto. El sistema solicita datos a la extensión, la extensión traduce las solicitudes en llamadas API del servicio en la nube y devuelve los resultados a través de NSFileProviderItem.
En lugar de cargar la estructura completa de archivos en cada actualización, la extensión transfiere solo los elementos modificados. NSFileProviderManager proporciona métodos para enviar actualizaciones incrementales — “archivo A añadido”, “archivo B modificado”, “carpeta C eliminada”. Esto reduce drásticamente el tráfico y acelera la visualización de los cambios.
Según Apple Engineering, la sincronización incremental reduce el volumen de datos transferidos en un 60–80% en comparación con una recarga completa. Se recomienda utilizar NSFileProviderSyncAnchor para marcar el estado de sincronización y minimizar las solicitudes duplicadas.
File Provider Extension puede almacenar archivos en caché localmente para acceso sin conexión. Cuando se abre un archivo, el sistema realiza una solicitud a la extensión, y la extensión decide si descargar el contenido del servidor o devolver una versión ya almacenada en caché. NSFileProviderItem indica el nivel de caché mediante los campos isDownloaded e isUploaded.
Apple recomienda configurar las políticas de caché según el tamaño del archivo: para imágenes y documentos — caché completo, para videos — solo vistas previas, para archivos — a solicitud del usuario.
NSFileProviderManager es la clase central a través de la cual la extensión interactúa con el sistema. Proporciona métodos para notificar al sistema sobre cambios, crear nuevos elementos, gestionar descargas y manejar errores. Cada instancia de NSFileProviderManager está vinculada a un dominio específico.
signalEnumerator(for:) — notifica al sistema que el contenido de una carpeta ha cambiado y debe volver a leerse. reimportItem(_:) — reimporta el elemento especificado después de un cambio en el servidor. registerURLSessionTask:forItemWithIdentifier: — asocia una descarga en segundo plano con un archivo específico para realizar un seguimiento del progreso.
Limitación importante: NSFileProviderManager solo funciona dentro del proceso de la extensión. La aplicación principal no puede llamar directamente a sus métodos para gestionar la estructura de archivos — la sincronización debe ser iniciada por la extensión o el sistema.
let manager = NSFileProviderManager.default()
manager.signalEnumerator(for: workingSet) { error in
if let error = error {
print("Signal failed: \(error)")
}
}
Para descargas de archivos en segundo plano, NSFileProviderManager utiliza URLSession con una configuración en segundo plano. La extensión crea una tarea de descarga y la registra en el gestor, que la asocia con el elemento correspondiente. El sistema rastrea automáticamente el progreso y las prioridades de descarga según la actividad del usuario.
La creación de File Provider Extension comienza añadiendo un nuevo target en Xcode con la plantilla File Provider Extension. Xcode genera automáticamente una clase que hereda de NSFileProviderExtension y un conjunto mínimo de métodos para trabajar con elementos.
Cada elemento de la estructura de archivos — un archivo o carpeta — implementa el protocolo NSFileProviderItem. El protocolo define campos obligatorios: itemIdentifier, parentItemIdentifier, filename, typeIdentifier y capabilities. Adicionalmente, se puede especificar el tamaño, la fecha de modificación y los indicadores de descarga.
struct CloudItem: NSFileProviderItem {
let itemIdentifier: NSFileProviderItemIdentifier
let parentItemIdentifier: NSFileProviderItemIdentifier
let filename: String
let typeIdentifier: String
let capabilities: NSFileProviderItemCapabilities
let documentSize: NSNumber?
}
El método enumerator(for:) devuelve un objeto que implementa NSFileProviderEnumerator, que proporciona el contenido de la carpeta a solicitud del sistema. iOS puede solicitar la enumeración de la carpeta raíz, subcarpetas y un conjunto de trabajo — este último se utiliza para mostrar archivos recientes o favoritos.
Apple recomienda utilizar métodos de enumeración asíncronos con paginación a través de NSFileProviderPage para no cargar miles de elementos a la vez. Las páginas de 50–100 elementos son óptimas para el rendimiento.
NSFileProviderDomain es el mecanismo para separar diferentes cuentas dentro de una misma extensión. Si un usuario ha autorizado varias cuentas en una aplicación — Google Drive personal y corporativo — cada cuenta crea un dominio separado, que aparece como una fuente independiente en la aplicación Archivos.
Cada dominio tiene un identificador único, un nombre visible y un estado. Los usuarios pueden desactivar temporalmente los dominios o eliminarlos sin afectar a otras cuentas. El sistema inicia un proceso de extensión separado para cada dominio activo, garantizando el aislamiento de datos entre cuentas.
Según Apple, se recomienda no crear más de 10 dominios por extensión — un número excesivo ralentiza el inicio de la aplicación Archivos y aumenta el consumo de memoria. Para servicios con un gran número de cuentas, es conveniente agregarlas en un solo dominio con cambio de perfil dentro de la extensión.
let domain = NSFileProviderDomain(
identifier: "work",
displayName: "Corporate Drive"
)
NSFileProviderManager.add(domain) { error in
if let error = error {
print("Failed to add domain: \(error)")
}
}
Preguntas frecuentes
Cualquier servicio puede implementar su propia extensión. Entre los que lo admiten — Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive y Nextcloud. La extensión es universal para cualquier almacenamiento REST o WebDAV.
La extensión recibe notificaciones del sistema sobre cambios en archivos locales y las envía al servidor a través de NSFileProviderManager. Para la sincronización inversa desde el servidor, se utiliza NSFileProviderSyncAnchor, un marcador de la última actualización.
Sí, si los archivos están almacenados en caché localmente. NSFileProviderItem marca los archivos descargados con el indicador isDownloaded. Los cambios realizados en modo sin conexión se sincronizan automáticamente cuando se restablece la conexión.
No hay limitaciones directas: el tamaño está determinado por las capacidades del servidor. Apple recomienda almacenar en caché automáticamente archivos de hasta 100 MB, y para archivos más grandes, utilizar descargas por streaming con una barra de progreso.
UIDocumentPickerViewController proporciona una selección única de archivos a través de una ventana modal. File Provider Extension integra una fuente permanente de documentos en la aplicación Archivos con sincronización en segundo plano y acceso a largo plazo.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también