File Provider Extension: o que é, extensão de acesso a arquivos iOS

Autor: IT Sectr Publicado: 2026-07-11 Tempo de leitura: 6 min

File Provider Extension é um mecanismo do iOS que permite que aplicativos forneçam acesso a arquivos de fontes externas através do aplicativo Arquivos integrado. De acordo com Apple Developer Documentation, 2024, o File Provider Extension permite exibir arquivos de armazenamento em nuvem, servidores e sistemas de arquivos personalizados diretamente no Files.app — sem necessidade de importá-los localmente. O usuário obtém uma interface unificada para trabalhar com arquivos, independentemente de sua localização física.

Pontos principais

  • File Provider Extension — extensão iOS para integrar sistemas de arquivos externos com o Files.app
  • NSFileProviderManager — a API principal para gerenciar arquivos e sincronização de estado
  • Dois modos de operação: Foundation-based e FileProviderUI para diferentes cenários de integração
  • Os provedores podem implementar pesquisa, hierarquia de pastas e tags via NSFileProviderItem
  • A segurança é garantida através do Sandbox — a extensão funciona isolada do aplicativo

O que é File Provider Extension no iOS?

File Provider Extension é uma extensão de aplicativo no iOS e macOS que permite que um aplicativo forneça acesso a arquivos de fontes externas através do aplicativo Arquivos do sistema. Foi introduzido no iOS 11 e substituiu o mecanismo Document Provider, adicionando suporte para sincronização, pesquisa e tags.

A principal tarefa do File Provider Extension é atuar como uma ponte entre o armazenamento externo (servidor em nuvem, NAS corporativo, FTP) e o Files.app. O usuário vê arquivos e pastas como se estivessem armazenados localmente, embora os dados possam estar em um servidor remoto. A extensão funciona em segundo plano, sincronizando o conteúdo conforme necessário.

De acordo com a WWDC 2024, a Apple está desenvolvendo ativamente a API FileProvider: foi adicionado suporte para sincronização incremental, o desempenho para grandes diretórios foi melhorado e operações em lote agora estão disponíveis. Isso torna o File Provider Extension a maneira preferida de integrar arquivos externos ao ecossistema Apple.

Como funciona o File Provider Extension

A arquitetura do File Provider Extension consiste em dois componentes: a extensão principal (tipo provedor de arquivos) e uma extensão de interface de usuário opcional para autenticação e configuração. A extensão principal implementa o protocolo NSFileProviderExtension e lida com todas as solicitações do 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)
    }
}

Quando um usuário abre o Files.app e seleciona seu provedor, o sistema inicia a extensão em um processo em segundo plano. A extensão não tem interface de usuário — é um processo headless que lida com solicitações de leitura, escrita, renomeação e exclusão de arquivos. Todas as operações são realizadas de forma assíncrona através do NSFileProviderManager.

Nuance importante: o File Provider Extension vive em um processo separado e pode ser encerrado pelo sistema quando a memória estiver baixa. Portanto, o provedor deve ser capaz de restaurar o estado após uma reinicialização, salvando identificadores e cache de sincronização no armazenamento persistente.

Modelo NSFileProviderItem: arquivos e pastas

NSFileProviderItem é um protocolo que descreve um arquivo ou pasta individual na hierarquia do provedor. Cada item tem um identificador único, nome, tipo (arquivo ou pasta), datas de criação e modificação, tamanho e flags (disponível offline, somente leitura).

PropriedadeTipoDescrição
itemIdentifierNSFileProviderItemIdentifierID único do item no sistema do provedor
parentItemIdentifierNSFileProviderItemIdentifierID da pasta pai (raiz — .rootContainer)
filenameStringNome do arquivo com extensão
typeIdentifierString (UTType)Identificador de Tipo Uniforme para determinar o tipo de conteúdo
capabilitiesNSFileProviderItemCapabilitiesFlags: exclusão, renomeação, adição de tags

O protocolo também suporta capacidades estendidas através do NSFileProviderItemProtocol: tags (rótulos coloridos), ícones, versionamento e ações personalizadas. Para arquivos grandes, o suporte para transferências retomáveis é implementado através do NSFileProviderService.

De acordo com a WWDC 2023, a Apple recomenda usar closures (NSFileProviderItemFields) para atualizar apenas propriedades alteradas em vez de todo o objeto. Isso acelera significativamente a sincronização durante atualizações em lote — por exemplo, quando apenas o tamanho de um grupo de arquivos muda.

Mecanismo de sincronização e NSFileProviderManager

NSFileProviderManager é a classe central para gerenciar o ciclo de vida da extensão. Ele fornece métodos para sinalizar ao sistema sobre mudanças, lidar com conflitos colaborativos e gerenciar downloads. O gerenciador rastreia automaticamente as transferências ativas e prioriza os arquivos visíveis ao usuário.

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
        )
    }
}

O mecanismo de sincronização é a lógica que o desenvolvedor implementa de forma independente. A Apple não fornece um mecanismo de sincronização embutido — apenas a API para notificar o sistema sobre mudanças. O provedor decide como baixar arquivos do servidor, armazená-los em cache localmente e resolver conflitos de edição.

Conflitos: o sistema suporta detecção de conflitos de versão através do NSFileProviderSyncAnchor. Quando um arquivo é alterado simultaneamente local e remotamente, o provedor usa a âncora de sincronização para determinar a última versão sincronizada e resolve o conflito usando uma estratégia de último escritor vence ou criando uma cópia conflitante.

Segurança e sandbox da extensão

File Provider Extension opera dentro de uma sandbox rigorosa do iOS. A extensão não tem acesso direto ao sistema de arquivos do aplicativo host e, inversamente, o aplicativo não pode ler os arquivos do provedor diretamente. Todas as trocas de dados ocorrem através das APIs do sistema Files.app.

O acesso aos arquivos do usuário só é possível através de interação explícita: o usuário abre um arquivo do Files.app em um aplicativo, e o sistema cria uma cópia temporária do arquivo em um contêiner isolado. O aplicativo receptor trabalha com esta cópia, não com o original no armazenamento do provedor.

De acordo com o Apple Security Guide, 2024, o provedor deve implementar criptografia de dados durante a transmissão (TLS 1.3) e pode opcionalmente adicionar criptografia de disco para arquivos em cache. A autenticação do usuário é realizada através de um componente FileProviderUI separado, que é executado fora da sandbox da extensão para entrada segura de credenciais.

Limitação chave: a extensão não pode executar código arbitrário — ela processa apenas solicitações através do NSFileProviderManager. Qualquer lógica além das operações de arquivo deve ser implementada no aplicativo principal e invocada através de grupos de aplicativos ou serviços XPC.

Perguntas frequentes

O que é File Provider Extension no iOS?

File Provider Extension é uma extensão de aplicativo para integrar armazenamento externo de arquivos com o aplicativo Arquivos. Permite exibir arquivos de serviços em nuvem, FTP, NAS e outras fontes sem copiá-los localmente.

Qual a diferença entre File Provider e Document Provider?

File Provider (iOS 11+) substituiu o Document Provider, adicionando sincronização em segundo plano, suporte de pesquisa Spotlight, tags e desempenho melhorado. O Document Provider foi descontinuado com o iOS 11 e removido no iOS 14.

Como o File Provider Extension sincroniza arquivos?

A sincronização é implementada pelo desenvolvedor através do NSFileProviderManager. A extensão sinaliza ao sistema sobre mudanças via signalEnumerator, e o sistema solicita uma lista atualizada de itens. Conflitos de versão são resolvidos através do NSFileProviderSyncAnchor.

A extensão pode funcionar sem o aplicativo principal?

Sim, o File Provider Extension pode funcionar como um processo independente sem o aplicativo principal em execução. É uma extensão headless que o iOS inicia quando solicitado pelo Files.app. No entanto, a autenticação e a configuração inicial geralmente são realizadas através do aplicativo principal.

Quais permissões o File Provider Extension precisa?

A extensão requer a capacidade File Provider no Xcode, bem como a permissão com.apple.developer.file-provider. Para acesso à rede, a capacidade Network é adicionada. Todos os outros direitos são estritamente limitados pela sandbox do iOS.

Resumo

  • File Provider Extension — um mecanismo iOS para integrar sistemas de arquivos externos com Files.app via extensão de aplicativo
  • NSFileProviderManager — a API principal para gerenciar arquivos, sinalizar mudanças e downloads
  • NSFileProviderItem — um protocolo que descreve uma unidade de conteúdo na hierarquia do provedor
  • Sandbox isola a extensão do aplicativo host — troca de dados apenas através do Files.app
  • Sincronização é implementada pelo desenvolvedor: a Apple fornece a API mas não um mecanismo embutido
  • Conflitos de versão são tratados via âncora de sincronização — o provedor escolhe a estratégia de resolução
  • Modo de segundo plano permite que a extensão funcione sem o aplicativo em execução, mas requer persistência de estado

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também