File Provider Extension : qu’est-ce que c’est, extension d’accès aux fichiers iOS

Auteur : IT Sectr Publié le : 2026-07-11 Temps de lecture : 6 min

File Provider Extension est un mécanisme iOS qui permet aux applications de fournir un accès aux fichiers provenant de sources externes via l’application Fichiers intégrée. Selon Apple Developer Documentation, 2024, File Provider Extension permet d’afficher les fichiers du stockage cloud, des serveurs et des systèmes de fichiers personnalisés directement dans Files.app — sans avoir besoin de les importer localement. L’utilisateur obtient une interface unifiée pour travailler avec les fichiers, indépendamment de leur emplacement physique.

Points clés

  • File Provider Extension — extension iOS pour intégrer des systèmes de fichiers externes avec Files.app
  • NSFileProviderManager — l’API principale pour gérer les fichiers et la synchronisation d’état
  • Deux modes de fonctionnement : Foundation-based et FileProviderUI pour différents scénarios d’intégration
  • Les fournisseurs peuvent implémenter la recherche, la hiérarchie des dossiers et les balises via NSFileProviderItem
  • La sécurité est assurée par Sandbox — l’extension fonctionne isolée de l’application

Qu’est-ce que File Provider Extension dans iOS ?

File Provider Extension est une extension d’application dans iOS et macOS qui permet à une application de fournir un accès aux fichiers provenant de sources externes via l’application Fichiers du système. Elle a été introduite dans iOS 11 et a remplacé le mécanisme Document Provider, en ajoutant la prise en charge de la synchronisation, de la recherche et des balises.

La tâche principale de File Provider Extension est de servir de pont entre le stockage externe (serveur cloud, NAS d’entreprise, FTP) et Files.app. L’utilisateur voit les fichiers et dossiers comme s’ils étaient stockés localement, bien que les données puissent se trouver sur un serveur distant. L’extension fonctionne en arrière-plan, synchronisant le contenu selon les besoins.

Selon la WWDC 2024, Apple développe activement l’API FileProvider : la prise en charge de la synchronisation incrémentielle a été ajoutée, les performances pour les grands répertoires ont été améliorées et les opérations par lots sont désormais disponibles. Cela fait de File Provider Extension la méthode préférée pour intégrer des fichiers externes dans l’écosystème Apple.

Comment fonctionne File Provider Extension

L’architecture de File Provider Extension se compose de deux composants : l’extension principale (type fournisseur de fichiers) et une extension d’interface utilisateur optionnelle pour l’authentification et la configuration. L’extension principale implémente le protocole NSFileProviderExtension et traite toutes les requêtes de Files.app.

swift
import FileProvider

class CloudFileProvider: NSFileProviderExtension {
    override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
        guard let item = storage
            .item(for: identifier) else {
            throw NSError(domain: NSFileProviderErrorDomain,
                              code: NSFileProviderError.noSuchItem.rawValue)
        }
        return item
    }

    override func urlForItem(with identifier: NSFileProviderItemIdentifier) -> URL {
        return fileCoordinator.urlForItem(with: identifier)
    }
}

Lorsqu’un utilisateur ouvre Files.app et sélectionne votre fournisseur, le système lance l’extension dans un processus en arrière-plan. L’extension n’a pas d’interface utilisateur — c’est un processus sans tête qui traite les demandes de lecture, d’écriture, de renommage et de suppression de fichiers. Toutes les opérations sont effectuées de manière asynchrone via NSFileProviderManager.

Nuance importante : File Provider Extension vit dans un processus séparé et peut être terminé par le système en cas de manque de mémoire. Par conséquent, le fournisseur doit être capable de restaurer l’état après un redémarrage, en enregistrant les identifiants et le cache de synchronisation dans un stockage persistant.

Modèle NSFileProviderItem : fichiers et dossiers

NSFileProviderItem est un protocole qui décrit un fichier ou un dossier individuel dans la hiérarchie du fournisseur. Chaque élément possède un identifiant unique, un nom, un type (fichier ou dossier), des dates de création et de modification, une taille et des indicateurs (disponible hors ligne, lecture seule).

PropriétéTypeDescription
itemIdentifierNSFileProviderItemIdentifierID unique de l’élément dans le système du fournisseur
parentItemIdentifierNSFileProviderItemIdentifierID du dossier parent (racine — .rootContainer)
filenameStringNom du fichier avec extension
typeIdentifierString (UTType)Identifiant de type uniforme pour déterminer le type de contenu
capabilitiesNSFileProviderItemCapabilitiesIndicateurs : suppression, renommage, ajout de balises

Le protocole prend également en charge des capacités étendues via NSFileProviderItemProtocol : balises (étiquettes colorées), icônes, versionnage et actions personnalisées. Pour les fichiers volumineux, la prise en charge des transferts reprisables est implémentée via NSFileProviderService.

Selon la WWDC 2023, Apple recommande d’utiliser des fermetures (NSFileProviderItemFields) pour mettre à jour uniquement les propriétés modifiées plutôt que l’objet entier. Cela accélère considérablement la synchronisation lors des mises à jour par lots — par exemple, lorsque seule la taille d’un groupe de fichiers change.

Moteur de synchronisation et NSFileProviderManager

NSFileProviderManager est la classe centrale pour gérer le cycle de vie de l’extension. Elle fournit des méthodes pour signaler au système les changements, gérer les conflits collaboratifs et gérer les téléchargements. Le gestionnaire suit automatiquement les transferts actifs et priorise les fichiers visibles pour l’utilisateur.

swift
class SyncManager {
    let providerManager = NSFileProviderManager.default

    func signalUpdate(for item: NSFileProviderItemIdentifier) {
        providerManager.signalEnumerator(
            for: item.parentItemIdentifier
        ) { error in
            if let error = error {
                Logger.sync.error(
                    "Failed to signal: \(error.localizedDescription)"
                )
            }
        }
    }

    func uploadItem(at url: URL, itemId: NSFileProviderItemIdentifier) {
        providerManager.registerURLBasedItem(
            with: itemId,
            url: url
        )
    }
}

Le moteur de synchronisation est la logique que le développeur implémente de manière indépendante. Apple ne fournit pas de mécanisme de synchronisation intégré — seulement l’API pour notifier le système des changements. Le fournisseur décide lui-même comment télécharger les fichiers depuis le serveur, les mettre en cache localement et résoudre les conflits d’édition.

Conflits : le système prend en charge la détection des conflits de version via NSFileProviderSyncAnchor. Lorsqu’un fichier est modifié simultanément localement et à distance, le fournisseur utilise l’ancre de synchronisation pour déterminer la dernière version synchronisée et résout le conflit en utilisant une stratégie de dernier écrivain gagnant ou en créant une copie en conflit.

Sécurité et sandbox de l’extension

File Provider Extension fonctionne dans une sandbox stricte d’iOS. L’extension n’a pas d’accès direct au système de fichiers de l’application hôte et, inversement, l’application ne peut pas lire directement les fichiers du fournisseur. Tous les échanges de données passent par les API système de Files.app.

L’accès aux fichiers de l’utilisateur n’est possible que par interaction explicite : l’utilisateur ouvre un fichier depuis Files.app dans une application, et le système crée une copie temporaire du fichier dans un conteneur isolé. L’application destinataire travaille avec cette copie, et non avec l’original dans le stockage du fournisseur.

Selon le Apple Security Guide, 2024, le fournisseur doit implémenter le chiffrement des données pendant la transmission (TLS 1.3) et peut optionnellement ajouter un chiffrement de disque pour les fichiers mis en cache. L’authentification de l’utilisateur est effectuée via un composant FileProviderUI séparé, qui s’exécute en dehors de la sandbox de l’extension pour une saisie sécurisée des identifiants.

Limitation clé : l’extension ne peut pas exécuter de code arbitraire — elle ne traite que les requêtes via NSFileProviderManager. Toute logique allant au-delà des opérations sur les fichiers doit être implémentée dans l’application principale et invoquée via des groupes d’applications ou des services XPC.

Foire aux questions

Qu’est-ce que File Provider Extension dans iOS ?

File Provider Extension est une extension d’application pour intégrer le stockage externe de fichiers avec l’application Fichiers. Elle permet d’afficher les fichiers des services cloud, FTP, NAS et d’autres sources sans les copier localement.

Quelle est la différence entre File Provider et Document Provider ?

File Provider (iOS 11+) a remplacé Document Provider, ajoutant la synchronisation en arrière-plan, la prise en charge de la recherche Spotlight, les balises et des performances améliorées. Document Provider a été déprécié avec iOS 11 et supprimé dans iOS 14.

Comment File Provider Extension synchronise-t-il les fichiers ?

La synchronisation est implémentée par le développeur via NSFileProviderManager. L’extension signale au système les changements via signalEnumerator, et le système demande une liste mise à jour des éléments. Les conflits de version sont résolus via NSFileProviderSyncAnchor.

L’extension peut-elle fonctionner sans l’application principale ?

Oui, File Provider Extension peut fonctionner comme un processus indépendant sans que l’application principale soit en cours d’exécution. C’est une extension sans tête qu’iOS lance à la demande de Files.app. Cependant, l’authentification et la configuration initiale sont généralement effectuées via l’application principale.

De quelles autorisations File Provider Extension a-t-il besoin ?

L’extension nécessite la capacité File Provider dans Xcode, ainsi que l’entitlement com.apple.developer.file-provider. Pour l’accès au réseau, la capacité Network est ajoutée. Tous les autres droits sont strictement limités par la sandbox iOS.

Résumé

  • File Provider Extension — un mécanisme iOS pour intégrer des systèmes de fichiers externes avec Files.app via une extension d’application
  • NSFileProviderManager — l’API principale pour gérer les fichiers, signaler les changements et les téléchargements
  • NSFileProviderItem — un protocole décrivant une unité de contenu dans la hiérarchie du fournisseur
  • Sandbox isole l’extension de l’application hôte — échange de données uniquement via Files.app
  • La synchronisation est implémentée par le développeur : Apple fournit l’API mais pas de moteur intégré
  • Les conflits de version sont gérés via l’ancre de synchronisation — le fournisseur choisit une stratégie de résolution
  • Le mode arrière-plan permet à l’extension de fonctionner sans l’application en cours d’exécution, mais nécessite la persistance de l’état

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