Privacy Manifest (PrivacyInfo.xcprivacy) Rehberi — En Sık App Store Rejection Nedeni
ITMS-91053 hatası mı aldınız? Privacy Manifest nedir, nasıl oluşturulur, üçüncü parti SDK'lar için ne yapmalı — çözüm rehberi.
Giriş: App Store'da 2024'ten beri en hızlı büyüyen rejection kategorisi Privacy Manifest ile ilgili. Hata kodu genelde ITMS-91053. Anlamı: uygulamanızda kullanılan bir framework veya SDK, gizlilik beyanı içeren PrivacyInfo.xcprivacy dosyasına sahip değil. Sinsi tarafı: Sizin yazdığınız kodda hiçbir sorun olmayabilir. Kullandığınız bir üçüncü parti kütüphane (analytics, ad, ödeme SDK'sı vb.) beyanı içermiyorsa, uygulamanızın tamamı reddedilir.
PrivacyInfo.xcprivacy Nedir?
Xcode 15 ile (2023) Apple, uygulamaların içine küçük bir XML dosyası eklemeyi zorunlu tuttu: PrivacyInfo.xcprivacy. Bu dosya, uygulamanızın (veya içindeki bir SDK'nın) hangi veriyi topladığını, hangi hassas sistem API'lerini kullandığını ve ne için kullandığını beyan eder. Yani Apple'a "İşte ben şu veriyi topluyorum, şu sebeple, şuraya gidiyor" diyen bir şeffaflık belgesi. Nisan 2026'dan itibaren Xcode 26 SDK ile bu manifest zorunlu hale geldi. Uygulamanızın kendisi artı kullandığı her SDK için ayrı manifest dosyası olmak zorunda.
Neden Reddediliyorum?
Rejection maili genelde şuna benzer: "ITMS-91053: Missing API declaration - Your app's code in the [SDK adı] framework references one or more APIs that require reasons... The following APIs were found: [liste]". Bu şu anlama gelir: Uygulamanızın içindeki [SDK adı] kütüphanesi, Apple'ın "gerekçe gerektiren" API'lerini kullanıyor ama PrivacyInfo.xcprivacy'de bunu beyan etmemiş. Sık karşılaşılan SDK'lar: Firebase (belirli sürümlerin altı), eski Facebook SDK, bazı analytics kütüphaneleri, ad network SDK'ları.
Nasıl Kontrol Edilir?
Xcode 26 build'de hata mesajını dikkatli okuyun — hangi framework olduğu yazar. Terminal komutu ile de kontrol edebilirsiniz. Uygulamanızın .ipa dosyasını açın, içindeki .app klasörünün altına bakın, her framework kendi PrivacyInfo.xcprivacy dosyasına sahip olmalı.
Çözüm
- SDK'ları güncelleyin. Kullandığınız her third-party kütüphaneyi son sürümüne getirin. Firebase, Facebook SDK, RevenueCat, Mixpanel, Amplitude, Sentry — hepsinin son sürümleri gizlilik manifesti içerir. CocoaPods kullanıyorsanız pod update, Swift Package Manager'da "Update to Latest Package Versions".
- Güncel olmayanları değiştirin. Bazı eski kütüphaneler artık bakılmıyor ve manifest içeren sürümü yok. Alternatif bulmanız gerek.
- Kendi manifestinizi oluşturun. Uygulamanızın kendisi de PrivacyInfo.xcprivacy dosyasına sahip olmalı. Xcode'da File > New > File > Resource > App Privacy File şeklinde ekleyebilirsiniz.
PrivacyInfo.xcprivacy İçeriği Nasıl Olmalı?
Dosya dört ana bölümden oluşur:
- NSPrivacyTracking: Uygulamanız kullanıcı takibi yapıyor mu? (true/false)
- NSPrivacyCollectedDataTypes: Hangi veri türlerini topluyorsunuz? (e-posta, konum, cihaz ID, satın alma bilgisi, vb.)
- NSPrivacyAccessedAPITypes: Hangi "gerekçe gerektiren" API'leri kullanıyorsunuz? (dosya sistem erişimi, kullanıcı varsayılanları, aktif keyboard, sistem başlangıç zamanı, disk alanı)
- NSPrivacyTrackingDomains: Hangi domain'lere takip amaçlı istek atıyorsunuz?
Her biri için hem "hangi veriyi/API'yi" hem de "neden" bilgisi girilmeli.
Apple'ın "Required Reason API" Listesi
Apple bazı API'ler için "gerekçe" beyanı zorunlu tuttu. En sık kullanılanlar:
- fileTimestamp: Dosyanın oluşturulma/değiştirilme zamanı
- systemBootTime: Sistemin son yeniden başlatılma zamanı
- diskSpace: Disk alanı bilgisi
- activeKeyboards: Aktif klavye listesi
- userDefaults: UserDefaults verilerine erişim
Her biri için beyanınız Apple'ın kabul ettiği gerekçelerden birine dayanmalı: örneğin "kullanıcının dosyayı ne zaman kaydettiğini uygulamada göstermek için" gibi.
Yaygın Hatalar
Yanlış: Manifest dosyasını sadece uygulamanın kendisine eklemek, SDK'ları unutmak. Doğru: Uygulama artı her SDK için ayrı manifest gerekli.
Yanlış: "Kullanıyoruz ama beyan etmedik, sorun yaşamadık şimdiye kadar." Doğru: Xcode 26 build'de bu artık hard fail. Beyan etmeden geçemezsiniz.
Yanlış: Genel bir "her şey topluyor" beyanı yazmak. Doğru: Spesifik veri tipi artı spesifik amaç. Genel beyan reddedilir.
Yanlış: Manifest'te uygulamanın topladığı bir veriyi yazıp App Privacy Label'da yazmamak. Doğru: İkisi tutarlı olmak zorunda. Uyumsuzluk eşittir rejection.
Cross-Platform Kullananlar İçin
React Native: React Native 0.73+ kendi manifest'ini içeriyor. Kullandığınız her react-native paket için ayrı ayrı manifest kontrolü gerekli.
Flutter: Flutter SDK 3.16+ manifest desteği ile geliyor. Flutter plugin'lerin her biri için kontrol edin.
Capacitor: Capacitor 5+ kendi manifest'ini içeriyor. Community plugin'ler için tek tek bakın.
Sonuç
Privacy Manifest 2026'nın "boğulan detay"ı — kod tabanınızda hiçbir sorun yokken sırf bir SDK yüzünden reddedilebilirsiniz. Çözüm: sürekli güncel SDK kullanmak, submit öncesi manifest kontrolü yapmak, uygulamanın kendi manifest'ini doğru doldurmak.
CU Studio olarak submit öncesi Privacy Manifest denetimi yapıyoruz. Detay: hello@custudio.com.tr
Bir projeniz mi var? Konuşalım.
Tasarımdan yayına uçtan uca çözüm üreten bağımsız bir yazılım stüdyosuyuz. Fikrinizi anlatın, bir iş günü içinde dönelim.