File Provider Extension : ce que c'est et comment fonctionne le fournisseur de fichiers iOS

Auteur : IT Sectr Publié le : 2026-06-15 Temps de lecture : 9 min

File Provider Extension est un mécanisme iOS qui permet aux services cloud et aux applications d'afficher leurs fichiers dans l'application Fichiers système. L'utilisateur voit les documents externes dans une interface unifiée avec les documents locaux et peut les ouvrir, les déplacer et les modifier sans installer de logiciel supplémentaire. Selon la documentation développeur Apple (2025), NSFileProviderManager assure une synchronisation incrémentielle et gère les versions de fichiers via son propre cache sur l'appareil.

Points clés

  • File Provider Extension intègre le stockage cloud et les services de fichiers dans l'application Fichiers iOS
  • L'architecture est basée sur le protocole NSFileProviderExtension et NSFileProviderManager pour la synchronisation des données
  • L'extension prend en charge la synchronisation incrémentielle — seuls les blocs modifiés sont transférés, pas les fichiers entiers
  • Chaque fichier est représenté par un objet NSFileProviderItem avec des métadonnées : taille, date de modification, type de contenu et autorisations
  • Les domaines (NSFileProviderDomain) permettent de séparer différents comptes au sein d'une même extension

Qu'est-ce que File Provider Extension dans iOS

File Provider Extension est une extension d'application qui ajoute de nouvelles sources de documents à l'application Fichiers. Un service cloud — Google Drive, Dropbox, OneDrive ou un stockage d'entreprise — peut afficher sa structure de fichiers directement dans l'interface système, sans ouvrir d'application séparée.

Les utilisateurs travaillent avec des fichiers distants exactement comme avec des fichiers stockés sur l'appareil : parcourir le contenu des dossiers, glisser-déposer des documents, les ouvrir dans n'importe quelle application compatible et enregistrer les modifications dans le cloud. Selon la WWDC 2025, File Provider Extension prend en charge jusqu'à 1000 opérations de synchronisation simultanées et s'adapte à la vitesse du réseau via une gestion dynamique des priorités.

L'extension fonctionne en arrière-plan — iOS la lance lorsque la synchronisation est nécessaire et peut la terminer de force lorsque les ressources sont insuffisantes. Toutes les opérations doivent être idempotentes et prendre en charge la reprise à partir d'un point de contrôle.

Architecture et mécanisme de synchronisation des fichiers

File Provider Extension a une architecture à trois niveaux : le processus système Files.app, l'extension fournisseur et le serveur distant. Le système demande des données à l'extension, l'extension traduit les requêtes en appels API du service cloud et renvoie les résultats via NSFileProviderItem.

Synchronisation incrémentielle

Au lieu de charger la structure complète des fichiers à chaque mise à jour, l'extension transfère uniquement les éléments modifiés. NSFileProviderManager fournit des méthodes pour envoyer des mises à jour incrémentielles — « fichier A ajouté », « fichier B modifié », « dossier C supprimé ». Cela réduit considérablement le trafic et accélère l'affichage des modifications.

Selon Apple Engineering, la synchronisation incrémentielle réduit le volume de données transférées de 60 à 80 % par rapport à un rechargement complet. Il est recommandé d'utiliser NSFileProviderSyncAnchor pour marquer l'état de synchronisation et minimiser les requêtes en double.

Cache sur l'appareil

File Provider Extension peut mettre en cache les fichiers localement pour un accès hors ligne. Lorsqu'un fichier est ouvert, le système fait une demande à l'extension, et l'extension décide de télécharger le contenu depuis le serveur ou de renvoyer une version déjà mise en cache. NSFileProviderItem indique le niveau de mise en cache via les champs isDownloaded et isUploaded.

Apple recommande de configurer les politiques de cache en fonction de la taille du fichier : pour les images et les documents — mise en cache complète, pour les vidéos — uniquement les aperçus, pour les archives — à la demande de l'utilisateur.

NSFileProviderManager : gestion du fournisseur de fichiers

NSFileProviderManager est la classe centrale par laquelle l'extension interagit avec le système. Elle fournit des méthodes pour notifier le système des changements, créer de nouveaux éléments, gérer les téléchargements et traiter les erreurs. Chaque instance de NSFileProviderManager est liée à un domaine spécifique.

Méthodes clés

signalEnumerator(for:) — notifie au système que le contenu d'un dossier a changé et doit être relu. reimportItem(_:) — réimporte l'élément spécifié après une modification côté serveur. registerURLSessionTask:forItemWithIdentifier: — associe un téléchargement en arrière-plan à un fichier spécifique pour le suivi de la progression.

Limitation importante : NSFileProviderManager fonctionne uniquement dans le processus de l'extension. L'application principale ne peut pas appeler directement ses méthodes pour gérer la structure des fichiers — la synchronisation doit être initiée par l'extension ou le système.

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

Gestion des téléchargements

Pour les téléchargements de fichiers en arrière-plan, NSFileProviderManager utilise URLSession avec une configuration d'arrière-plan. L'extension crée une tâche de téléchargement et l'enregistre dans le gestionnaire, qui l'associe à l'élément correspondant. Le système suit automatiquement la progression et les priorités des téléchargements en fonction de l'activité de l'utilisateur.

Implémentation de File Provider Extension

La création d'une File Provider Extension commence par l'ajout d'une nouvelle cible dans Xcode avec le modèle File Provider Extension. Xcode génère automatiquement une classe héritant de NSFileProviderExtension et un ensemble minimal de méthodes pour travailler avec les éléments.

NSFileProviderItem et métadonnées

Chaque élément de la structure de fichiers — un fichier ou un dossier — implémente le protocole NSFileProviderItem. Le protocole définit les champs obligatoires : itemIdentifier, parentItemIdentifier, filename, typeIdentifier et capabilities. En complément, vous pouvez spécifier la taille, la date de modification et les indicateurs de téléchargement.

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

Traitement des requêtes d'énumération

La méthode enumerator(for:) renvoie un objet implémentant NSFileProviderEnumerator, qui fournit le contenu du dossier à la demande du système. iOS peut demander l'énumération du dossier racine, des sous-dossiers et d'un ensemble de travail — ce dernier est utilisé pour afficher les fichiers récents ou favoris.

Apple recommande d'utiliser des méthodes d'énumération asynchrones avec pagination via NSFileProviderPage pour ne pas charger des milliers d'éléments à la fois. Les pages de 50 à 100 éléments sont optimales pour les performances.

Domaines et architecture multi-comptes

NSFileProviderDomain est le mécanisme de séparation des différents comptes au sein d'une même extension. Si un utilisateur a autorisé plusieurs comptes dans une application — Google Drive personnel et professionnel — chaque compte crée un domaine séparé, qui apparaît comme une source distincte dans l'application Fichiers.

Chaque domaine possède un identifiant unique, un nom d'affichage et un état. Les utilisateurs peuvent désactiver temporairement les domaines ou les supprimer sans affecter les autres comptes. Le système lance un processus d'extension séparé pour chaque domaine actif, garantissant l'isolation des données entre les comptes.

Selon Apple, il est recommandé de ne pas créer plus de 10 domaines par extension — un nombre excessif ralentit le lancement de l'application Fichiers et augmente la consommation mémoire. Pour les services avec un grand nombre de comptes, il est préférable de les regrouper dans un seul domaine avec changement de profil au sein de l'extension.

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

Questions fréquentes

Quels services cloud prennent en charge File Provider Extension ?

Tout service peut implémenter sa propre extension. Parmi ceux qui prennent en charge — Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive et Nextcloud. L'extension est universelle pour tout stockage REST ou WebDAV.

Comment l'extension synchronise-t-elle les modifications avec le serveur ?

L'extension reçoit des notifications du système concernant les modifications de fichiers locaux et les envoie au serveur via NSFileProviderManager. Pour la synchronisation inverse depuis le serveur, NSFileProviderSyncAnchor est utilisé — un marqueur de la dernière mise à jour.

L'extension peut-elle fonctionner hors ligne ?

Oui, si les fichiers sont mis en cache localement. NSFileProviderItem marque les fichiers téléchargés avec le flag isDownloaded. Les modifications effectuées en mode hors ligne sont synchronisées automatiquement lors de la restauration de la connexion.

Quelles sont les limitations de taille de fichier ?

Il n'y a pas de limitations directes — la taille est déterminée par les capacités du serveur. Apple recommande de mettre en cache automatiquement les fichiers jusqu'à 100 Mo, et pour les fichiers plus volumineux, d'utiliser le téléchargement en streaming avec une barre de progression.

Quelle est la différence entre NSFileProviderExtension et UIDocumentPickerViewController ?

UIDocumentPickerViewController fournit une sélection unique de fichiers via une fenêtre modale. File Provider Extension intègre une source permanente de documents dans l'application Fichiers avec synchronisation en arrière-plan et accès à long terme.

Résumé

  • File Provider Extension intègre des services de fichiers externes dans l'application Fichiers, rendant les documents distants accessibles dans une interface unifiée
  • L'architecture utilise NSFileProviderExtension et NSFileProviderManager pour la synchronisation incrémentielle des données avec le serveur
  • NSFileProviderItem représente un fichier ou un dossier individuel avec un ensemble complet de métadonnées et de capacités
  • Les domaines (NSFileProviderDomain) fournissent une architecture multi-comptes avec isolation des données entre les comptes
  • La mise en cache sur l'appareil permet de travailler avec des fichiers hors ligne avec synchronisation automatique après restauration de la connexion
  • La synchronisation incrémentielle réduit le trafic de 60 à 80 % par rapport à un rechargement complet de la structure de fichiers

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi