File Provider Extension: nedir ve iOS dosya sağlayıcısı nasıl çalışır

Yazar: IT Sectr Yayınlanma: 2026-06-15 Okuma süresi: 9 dk

File Provider Extension, bulut hizmetlerinin ve uygulamaların dosyalarını sistem Files uygulamasında görüntülemesine olanak tanıyan bir iOS mekanizmasıdır. Kullanıcı, harici belgeleri yerel belgelerle birlikte birleşik bir arayüzde görür ve ek yazılım yüklemeye gerek kalmadan bunları açabilir, taşıyabilir ve düzenleyebilir. Apple Developer Documentation (2025)'ye göre NSFileProviderManager, artımlı senkronizasyon sağlar ve dosya sürümlerini cihazdaki kendi önbelleği aracılığıyla yönetir.

Önemli Noktalar

  • File Provider Extension, iOS'ta Files uygulamasına bulut depolama ve dosya hizmetlerini entegre eder
  • Mimari, veri senkronizasyonu için NSFileProviderExtension protokolü ve NSFileProviderManager'a dayanır
  • Uzantı, artımlı senkronizasyonu destekler — tam dosyalar değil, yalnızca değiştirilen bloklar aktarılır
  • Her dosya, meta verilerle (boyut, değişiklik tarihi, içerik türü ve izinler) birlikte bir NSFileProviderItem nesnesiyle temsil edilir
  • Alanlar (NSFileProviderDomain), tek bir uzantı içinde farklı hesapları ayırmaya olanak tanır

iOS'ta File Provider Extension Nedir

File Provider Extension, Files uygulamasına yeni belge kaynakları ekleyen bir uygulama uzantısıdır. Bir bulut hizmeti — Google Drive, Dropbox, OneDrive veya kurumsal depolama — ayrı bir uygulama açmadan doğrudan sistem arayüzünde dosya yapısını görüntüleyebilir.

Kullanıcılar, uzak dosyalarla cihazda kayıtlı dosyalarla tamamen aynı şekilde çalışır: klasör içeriklerine göz atma, belgeleri sürükleyip bırakma, bunları uyumlu herhangi bir uygulamada açma ve değişiklikleri buluta geri kaydetme.WWDC 2025'e göre File Provider Extension, 1000'e kadar eşzamanlı senkronizasyon işlemini destekler ve dinamik öncelik yönetimi aracılığıyla ağ hızına uyum sağlar.

Uzantı arka planda çalışır — iOS, senkronizasyon gerektiğinde onu başlatır ve kaynaklar yetersiz olduğunda zorla sonlandırabilir. Tüm işlemler idempotent olmalı ve bir kontrol noktasından devam etmeyi desteklemelidir.

Mimari ve Dosya Senkronizasyon Mekanizması

File Provider Extension üç katmanlı bir mimariye sahiptir: Files.app sistem süreci, sağlayıcı uzantısı ve uzak sunucu. Sistem, uzantıdan veri talep eder, uzantı talepleri bulut hizmeti API çağrılarına dönüştürür ve sonuçları NSFileProviderItem aracılığıyla döndürür.

Artımlı Senkronizasyon

Her güncellemede tam dosya yapısını yüklemek yerine, uzantı yalnızca değiştirilen öğeleri aktarır. NSFileProviderManager, artımlı güncellemeler göndermek için yöntemler sağlar — “dosya A eklendi”, “dosya B değiştirildi”, “klasör C silindi”. Bu, trafiği önemli ölçüde azaltır ve değişikliklerin görüntülenmesini hızlandırır.

Apple Mühendisliği'ne göre, artımlı senkronizasyon, tam yeniden yüklemeye kıyasla veri aktarım hacmini %60–80 oranında azaltır. Senkronizasyon durumunu işaretlemek ve yinelenen talepleri en aza indirmek için NSFileProviderSyncAnchor kullanılması önerilir.

Cihazda Önbelleğe Alma

File Provider Extension, çevrimdışı erişim için dosyaları yerel olarak önbelleğe alabilir. Bir dosya açıldığında, sistem uzantıya bir talep gönderir ve uzantı, içeriği sunucudan indirmeye veya önceden önbelleğe alınmış bir sürümü döndürmeye karar verir. NSFileProviderItem, isDownloaded ve isUploaded alanları aracılığıyla önbellek düzeyini belirtir.

Apple, dosya boyutuna göre önbellek politikalarının yapılandırılmasını önerir: görseller ve belgeler için — tam önbelleğe alma, videolar için — yalnızca önizlemeler, arşivler için — kullanıcı talebi üzerine.

NSFileProviderManager: Dosya Sağlayıcısını Yönetme

NSFileProviderManager, uzantının sistemle etkileşime girdiği merkezi sınıftır. Sisteme değişiklikleri bildirmek, yeni öğeler oluşturmak, indirmeleri yönetmek ve hataları işlemek için yöntemler sağlar. Her NSFileProviderManager örneği belirli bir alana bağlıdır.

Anahtar Yöntemler

signalEnumerator(for:) — klasör içeriğinin değiştiğini ve yeniden okunması gerektiğini sisteme bildirir. reimportItem(_:) — sunucu tarafında yapılan bir değişiklikten sonra belirtilen öğeyi yeniden içe aktarır. registerURLSessionTask:forItemWithIdentifier: — ilerleme takibi için bir arka plan indirmesini belirli bir dosyayla ilişkilendirir.

Önemli sınırlama: NSFileProviderManager yalnızca uzantı süreci içinde çalışır. Ana uygulama, dosya yapısını yönetmek için yöntemlerini doğrudan çağıramaz — senkronizasyon uzantı veya sistem tarafından başlatılmalıdır.

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

İndirme Yönetimi

Arka planda dosya indirmeleri için NSFileProviderManager, arka plan yapılandırmasıyla URLSession kullanır. Uzantı bir indirme görevi oluşturur ve bunu yöneticiye kaydeder, yönetici de onu ilgili öğeyle ilişkilendirir. Sistem, kullanıcı etkinliğine bağlı olarak indirme ilerlemesini ve önceliklerini otomatik olarak izler.

File Provider Extension Uygulaması

Bir File Provider Extension oluşturmak, Xcode'da File Provider Extension şablonuyla yeni bir hedef eklemekle başlar. Xcode, otomatik olarak NSFileProviderExtension'den miras alan bir sınıf ve öğelerle çalışmak için minimum bir yöntem seti oluşturur.

NSFileProviderItem ve Meta Veriler

Dosya yapısındaki her öğe — bir dosya veya klasör — NSFileProviderItem protokolünü uygular. Protokol, zorunlu alanları tanımlar: itemIdentifier, parentItemIdentifier, filename, typeIdentifier ve capabilities. Ek olarak, boyut, değişiklik tarihi ve indirme bayraklarını belirtebilirsiniz.

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

Numaralama Taleplerinin İşlenmesi

enumerator(for:) yöntemi, NSFileProviderEnumerator uygulayan bir nesne döndürür ve bu nesne, sistem talebi üzerine klasör içeriğini sağlar. iOS, kök klasör, alt klasörler ve bir çalışma seti için numaralama talep edebilir — ikincisi, son veya favori dosyaları görüntülemek için kullanılır.

Apple, aynı anda binlerce öğeyi yüklememek için NSFileProviderPage aracılığıyla sayfalama ile eşzamansız numaralama yöntemlerinin kullanılmasını önerir. Performans için 50–100 öğelik sayfalar idealdir.

Alanlar ve Çoklu Hesap Mimarisi

NSFileProviderDomain, tek bir uzantı içinde farklı hesapları ayırma mekanizmasıdır. Bir kullanıcı bir uygulamada birden fazla hesabı yetkilendirdiyse — kişisel ve kurumsal Google Drive — her hesap ayrı bir alan oluşturur ve Files uygulamasında ayrı bir kaynak olarak görünür.

Her alanın benzersiz bir tanımlayıcısı, görünen adı ve durumu vardır. Kullanıcılar, diğer hesapları etkilemeden alanları geçici olarak devre dışı bırakabilir veya silebilir. Sistem, her aktif alan için ayrı bir uzantı süreci başlatır ve hesaplar arasında veri yalıtımı sağlar.

Apple'a göre, uzantı başına 10'dan fazla alan oluşturulmaması önerilir — aşırı sayı, Files uygulamasının başlatılmasını yavaşlatır ve bellek tüketimini artırır. Çok sayıda hesabı olan hizmetler için, uzantı içinde profil değiştirme ile tek bir alanda toplamak daha uygundur.

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

Sıkça Sorulan Sorular

Hangi bulut hizmetleri File Provider Extension'ı destekler?

Herhangi bir hizmet kendi uzantısını uygulayabilir. Destekleyen hizmetler arasında — Google Drive, Dropbox, Microsoft OneDrive, Box, iCloud Drive ve Nextcloud bulunur. Uzantı, herhangi bir REST veya WebDAV deposu için evrenseldir.

Uzantı, değişiklikleri sunucuyla nasıl senkronize eder?

Uzantı, yerel dosya değişiklikleri hakkında sistemden bildirimler alır ve bunları NSFileProviderManager aracılığıyla sunucuya gönderir. Sunucudan ters senkronizasyon için, NSFileProviderSyncAnchor kullanılır — son güncellemenin bir işareti.

Uzantı çevrimdışı çalışabilir mi?

Evet, dosyalar yerel olarak önbelleğe alınmışsa. NSFileProviderItem, indirilen dosyaları isDownloaded bayrağıyla işaretler. Çevrimdışı modda yapılan değişiklikler, bağlantı yeniden kurulduğunda otomatik olarak senkronize edilir.

Dosya boyutu sınırlamaları nelerdir?

Doğrudan bir sınırlama yoktur — boyut, sunucunun kapasitesine göre belirlenir. Apple, 100 MB'a kadar olan dosyaların otomatik olarak önbelleğe alınmasını ve daha büyük dosyalar için ilerleme çubuğuyla akışlı indirme kullanılmasını önerir.

NSFileProviderExtension, UIDocumentPickerViewController'dan nasıl farklıdır?

UIDocumentPickerViewController, kalıcı bir pencere aracılığıyla tek seferlik dosya seçimi sağlar. File Provider Extension, arka planda senkronizasyon ve uzun vadeli erişimle Files uygulamasına kalıcı bir belge kaynağı yerleştirir.

Özet

  • File Provider Extension, harici dosya hizmetlerini Files uygulamasına entegre ederek uzak belgeleri birleşik bir arayüzde erişilebilir kılar
  • Mimari, sunucuyla artımlı veri senkronizasyonu için NSFileProviderExtension ve NSFileProviderManager kullanır
  • NSFileProviderItem, eksiksiz meta veri ve yeteneklerle tek bir dosya veya klasörü temsil eder
  • Alanlar (NSFileProviderDomain), hesaplar arasında veri yalıtımı ile çoklu hesap mimarisi sağlar
  • Cihazda önbelleğe alma, bağlantı yeniden kurulduktan sonra otomatik senkronizasyonla çevrimdışı dosyalarla çalışmaya olanak tanır
  • Artımlı senkronizasyon, tam dosya yapısı yeniden yüklemeye kıyasla trafiği %60–80 oranında azaltır

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun