ATT iOS: nedir, izleme talebi mekanizması ve IDFA

Yazar: IT Sectr Yayınlanma: 2026-05-20 Okuma süresi: 10 dk

App Tracking Transparency (ATT), uygulamalarda ve web sitelerinde izleme öncesinde reklam tanımlayıcısı IDFA'ya erişmek için kullanıcının açık rızasını gerektiren bir iOS mekanizmasıdır. iOS 14.5 ile tanıtılan ATT, tüm geliştiricileri izleme izni isteyen bir sistem diyaloğu göstermeye zorunlu kılmıştır. Apple Geliştirici Belgeleri'ne göre, hedefli reklamcılık veya atfı için IDFA kullanan her uygulama, ATT çerçevesini entegre etmeli ve erişim izni almalıdır.

Önemli Noktalar

  • ATT — App Tracking Transparency, iOS 14.5+'ta izleme talebi için çerçeve
  • IDFA — cihazın reklam tanımlayıcısı, rıza olmadan erişim kısıtlı
  • Sistem diyaloğu — uygulama metnini içeren ve değiştirilemeyen standart açılır pencere
  • İzleme izni — reklam gösterme ve yükleme atfı için zorunlu talep
  • Ret — kullanıcı izni Ayarlar'dan herhangi bir zamanda iptal edebilir

ATT (App Tracking Transparency) nedir?

App Tracking Transparency, iOS 14.5'te tanıtılan, kullanıcı gizliliğini korumak için Apple çerçevesidir. Uygulamaların, izleme için kullanmadan önce cihazın reklam tanımlayıcısına (IDFA) erişmek için açık izin almasını zorunlu kılar.

ATT'den önce, geliştiriciler izin istemeden IDFA'yı okuyabiliyordu ve bu da reklam ağlarının kullanıcı profilleri oluşturmasına ve uygulamalar ile web siteleri arasındaki etkinliklerini izlemesine olanak tanıyordu. Apple bunu gizlilik ihlali olarak değerlendirdi ve zorunlu bir rıza diyaloğu başlattı.

Çerçeve iOS 14.0'dan beri mevcuttur, ancak Nisan 2021'de iOS 14.5'in piyasaya sürülmesiyle IDFA kullanan tüm uygulamalar için zorunlu hale gelmiştir. Flurry Analytics'e göre, ATT'nin uygulanmasından sonra ABD'li kullanıcıların %25'inden azı izlemeyi kabul etmiş ve bu da mobil reklam pazarını kökten değiştirmiştir.

ATT, uygulamanın değiştiremeyeceği veya atlayamayacağı özel bir sistem diyaloğu aracılığıyla izni kontrol eder. Kullanıcı, geliştirici tarafından sağlanan metni içeren standart bir açılır pencere görür ve “İzin Ver” veya “Uygulamadan İzlememesini İste” seçeneğini seçer.

ATT'nin iOS gizliliğiyle ilişkisi

Apple, ATT'yi App Store'daki Gizlilik Besin Etiketleri ve Gizlilik Manifestosu'nu da içeren genel gizlilik stratejisinin bir parçası olarak konumlandırır. Üç mekanizma birlikte çalışır: etiketler uygulamanın hangi verileri topladığını gösterir, Manifesto API kullanım nedenlerini beyan eder ve ATT kullanıcıya izleme üzerinde kontrol sağlar.

İzlemeyi reddetmek uygulamanın çalışmasını engellemez — kullanıcılar tüm özellikleri kullanmaya devam edebilir, ancak reklam ağları kişiselleştirme ve atıf için IDFA alamaz. Apple'ın IDFA'ya alternatifleri arasında SKAdNetwork ve Olasılıksal Atıf bulunur.

Branch Metrics'e göre, ATT'nin tanıtılmasından sonra, IDFA alan uygulamaların oranı küresel olarak %70'ten %20'ye düşmüştür. Bu, yükleme atfı ve reklamdan para kazanma yaklaşımlarının yeniden gözden geçirilmesine yol açmıştır.

iOS 15 ve 16'daki değişiklikler

iOS 15'te Apple, ATT gereksinimlerini sıkılaştırmamış ancak Uygulama Gizlilik Raporu'nu eklemiştir — kullanıcıya uygulamaların sensörlere ve verilere ne sıklıkta eriştiğini gösteren bir rapor. iOS 16 kontrolü genişletmiştir: kullanıcı, Ayarlar → Gizlilik → İzleme yoluyla izleme ayarlarını istediği zaman değiştirebilir.

Önemli: kullanıcı ATT diyaloğunda “Uygulamadan İzlememesini İste” seçeneğini seçerse, uygulama IDFA değerini almaz — bunun yerine, sıfırlardan oluşan bir dize döndürür: 00000000-0000-0000-0000-000000000000. IDFA'yı başka yollarla veya geçici çözümlerle okumaya çalışmak, App Store'da uygulamanın reddedilmesine yol açar.

iOS 17'den itibaren Apple denetimleri güçlendirmiştir: bir uygulama ATT sistem diyaloğunu göstermeden IDFA talep ederse, boş bir tanımlayıcı yerine işletim sistemi düzeyinde bir ret alır. Bu, kullanıcının bilgisi olmadan arka planda IDFA toplama olasılığını ortadan kaldırır.

iOS'ta izleme talebi nasıl çalışır

ATT talep süreci üç aşamadan oluşur: durumun kontrol edilmesi, sistem diyaloğunun görüntülenmesi ve yanıtın işlenmesi. Geliştirici hiçbir adımı atlayamaz — işletim sistemi her aşamayı kontrol eder.

Yetkilendirme durumunun kontrol edilmesi

Diyaloğu çağırmadan önce, uygulama ATTrackingManager aracılığıyla mevcut durumu kontrol etmelidir. Olası durumlar: notDetermined (henüz talep edilmedi), restricted (cihaz politikaları tarafından yasaklandı), denied (kullanıcı reddetti), authorized (izin verildi).

Durum zaten belirlenmişse (authorized veya denied), diyalog tekrar çağrılamaz — kullanıcı kalıcı bir karar vermiştir. Kararı değiştirmenin tek yolu iOS sistem ayarlarıdır.

Durumu kontrol etmek için ATTrackingManager.trackingAuthorizationStatus özelliği kullanılır. Sistem diyaloğu bir kullanıcı arayüzü bileşeni olduğundan, çağrı ana iş parçacığında yapılmalıdır.

swift
import AppTrackingTransparency
import AdSupport

func checkTrackingStatus() {
    let status = ATTrackingManager.trackingAuthorizationStatus
    switch status {
    case .notDetermined:
        requestTrackingPermission()
    case .authorized:
        readIDFA()
    case .denied, .restricted:
        useAlternativeTracking()
    @unknown default:
        break
    }
}

Sistem diyaloğunun görüntülenmesi

Diyaloğu göstermek için, kullanıcının seçiminin sonucunu alan bir closure ile requestTrackingAuthorization yöntemi çağrılır. Önemli: diyalog yalnızca bir kez görüntülenir. Geliştirici tekrar çağırmaya çalışırsa, sistem isteği yok sayar.

Diyalog metni iki bölümden oluşur: değiştirilemeyen bir sistem başlığı ve geliştiricinin Info.plist'te NSUserTrackingUsageDescription anahtarı aracılığıyla belirttiği özel bir mesaj.

Diyalog doğal bir bağlamda görünmelidir — uygulama başlatılır hemen değil, izlemeyle ilgili işlevselliği ilk kullanma girişiminde. Apple, kullanıcı özelliğin değerini anladıktan sonra diyaloğun gösterilmesini önerir.

swift
func requestTrackingPermission() {
    ATTrackingManager.requestTrackingAuthorization { status in
        DispatchQueue.main.async {
            switch status {
            case .authorized:
                let idfa = ASIdentifierManager.shared().advertisingIdentifier
                print("IDFA: \(idfa)")
            case .denied:
                print("Kullanıcı izlemeyi reddetti")
            default:
                break
            }
        }
    }
}

IDFA ve erişim kısıtlaması

IDFA (Identifier for Advertisers), iOS cihazları için hedefli reklamcılık ve yükleme atfında kullanılan benzersiz bir reklam tanımlayıcısıdır. ATT'den önce, geliştiriciler bunu ASIdentifierManager aracılığıyla kısıtlama olmadan elde ediyordu. ATT'den sonra, kullanıcı açık rıza verene kadar IDFA'ya erişim engellenir.

IDFA nedir ve neden gereklidir

IDFA, her iOS cihazı için benzersiz bir UUID dizesidir. Reklam ağları IDFA'yı şunlar için kullanır: uygulama yüklemelerini izleme (atıf), kullanıcı ilgi alanlarına göre ilgili reklamları gösterme, reklam kampanyalarının etkinliğini ölçme ve yeniden hedefleme — istenen eylemi tamamlamamış kullanıcıları geri getirme.

Kullanıcı izlemeyi reddettikten sonra, ASIdentifierManager 00000000-0000-0000-0000-000000000000 değerini döndürür. Uygulama, teknik amaçlar (dolandırıcılık önleme gibi) için IDFA'yı okuyabilir, ancak reklam ağlarına iletemez.

Singular (2024)'e göre, küresel ATT rıza oranı %25–35'tir ve Avrupa (GDPR) %40–50 ile ABD'den (%15–25) daha yüksektir. Bu, reklam platformlarını alternatif atıf yöntemleri geliştirmeye itmiştir.

IDFA alternatifleri: SKAdNetwork ve Olasılıksal Atıf

SKAdNetwork, IDFA'yı ifşa etmeden yükleme atfı için Apple çerçevesidir. İşletim sistemi düzeyinde çalışır: reklam ağı imzalı bir postback gönderir, Apple doğrular ve geliştiriciye iletir. Atıf, belirli bir kullanıcıyı tanımlamadan yalnızca kampanya düzeyinde gerçekleşir.

Olasılıksal Atıf, yüklemeleri reklam gösterimleriyle olasılıksal olarak eşleştirmek için birden çok cihaz sinyali — model, iOS sürümü, saat dilimi, ekran parlaklığı — kullanır. Ancak Apple, bu yöntemi yönergelerinde yasaklar ve kullanımı uygulama reddine yol açabilir.

Google, Adjust ve AppsFlyer, SKAdNetwork'u tescilli toplu verilerle birleştiren kendi hibrit çözümlerini geliştirmiştir. Örneğin, Google Ads Dönüşüm İzleme, IDFA olmadan atıf için SKAdNetwork postback'lerini ve kendi makine öğrenimi modellerini kullanır.

Uygulama kodunda ATT uygulaması

ATT'yi entegre etmek için Info.plist'e NSUserTrackingUsageDescription anahtarını eklemeniz ve AppTrackingTransparency çerçevesini içe aktarmanız gerekir. Aşağıda Swift ve Objective-C için adımlar verilmiştir.

Info.plist kurulumu

İlk adım, Info.plist'e NSUserTrackingUsageDescription anahtarını uygulamanın neden izlemeye ihtiyacı olduğunu açıklayan bir metinle eklemektir. Bu metin sistem diyaloğunda görüntülenecektir. Örnek: “IDFA'nız, kişiselleştirilmiş reklamlar göstermek ve kampanya etkinliğini izlemek için kullanılır.”

Bu anahtar olmadan, requestTrackingAuthorization'u çağırmak uygulamanın çökmesine neden olur — Apple, diyaloğu göstermeden önce NSUserTrackingUsageDescription'ın varlığını açıkça kontrol eder. Metin kısa, belirli ve gerçek veri kullanımını yansıtmalıdır.

Önemli: anahtar, Xcode Info sekmesi aracılığıyla veya Info.plist'in XML kaynağı düzenlenerek manuel olarak eklenir. Ekledikten sonra projeyi yeniden derleyin ve anahtarın son ikili dosyada göründüğünü doğrulayın.

xml
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>

Swift'te tam entegrasyon

Gerçek bir projede, ATT talebini bir reklam modülü veya izleyicinin ilk başlatılmasından önce çağırmak en iyisidir. Ayrı bir ekranda (ön izin istemi) rızanın değerini önceden açıklamanız önerilir — bu, rıza oranlarını %20–30 artırır.

Ön izin istemi, izlemeyi etkinleştirmenin yararını gösteren özel bir kullanıcı arayüzüdür (“İlgili reklamları göstermemize yardımcı olun”). “Devam” düğmesine dokunulduktan sonra sistem ATT diyaloğu görünür. Adjust (2024), ön izin ekranı kullanıldığında rızada %40 artış kaydetmiştir.

swift
final class TrackingManager {
    static let shared = TrackingManager()

    func requestTrackingIfNeeded() {
        guard ATTrackingManager.trackingAuthorizationStatus
            == .notDetermined
        else { return }

        ATTrackingManager.requestTrackingAuthorization { _ in
            NotificationCenter.default.post(
                Notification(Name("trackingStatusChanged"))
            )
        }
    }
}

ATT ile çalışırken yapılan hatalar

Geliştiriciler, ATT'yi entegre ederken sıklıkla tipik hatalar yapar ve bu da düşük rıza dönüşümüne veya App Store denetçileri tarafından uygulamanın reddedilmesine yol açar. En yaygın beş sorunu inceleyelim.

Uygulama başlatıldıktan hemen sonra ATT talep etme

En yaygın hata, uygulama yüklendikten hemen sonra ilk ekranda ATT sistem diyaloğunu göstermektir. Kullanıcı henüz uygulamanın değerini anlamamıştır ve büyük olasılıkla “Reddet„ düğmesine basar. IronSource (2023), üçüncü oturumdan sonra talep etmeye kıyasla ilk ekranda talep edildiğinde rızada %32 düşüş göstermiştir.

Öneri: kullanıcı değerli bir eylem gerçekleştirdikten (içerik görüntüleme, oryantasyonu başlatma) veya 3–5 uygulama oturumundan sonra izlemeyi talep edin. Bu, güveni ve algılanan değeri artırır.

Ön izin ekranının olmaması

Önceden açıklama yapmadan ATT sistem diyaloğunu göstermek, dönüşümü %15–20'ye düşüren bir hatadır. Kullanıcı beklenmedik bir talep görür ve içgüdüsel olarak reddeder. Yararı açıklayan bir ön izin ekranı, rızayı %35–45'e çıkarır.

Ön izin metni belirli olmalıdır: “İlgili reklamları göstermemize izin verin — bu, ücretsiz kalmamıza yardımcı olur.” Belirsiz ifadelerden kaçının — güveni azaltırlar. GameAnalytics 2023'te yararı açıklayan bir ön izin ekranının boş bir ekrana göre %28 daha fazla rıza sağladığını göstermiştir.

Restricted ve denied durumunu görmezden gelme

Kullanıcı zaten izlemeyi reddetmişse veya durum restricted ise (ebeveyn denetimleri, kurumsal politikalar), uygulama ATT diyaloğunu tekrar çağırmamalıdır. Tekrarlanan çağrı çalışmaz ve gizlilik ihlali olarak algılanır. Bunun yerine, SKAdNetwork ve bağlamsal reklamcılığa geçin.

Restricted durumunda, uygulama ayarlarda “İzleme \u0131steklerine İzin Ver” seçeneğinin etkin olup olmadığını belirleyemez. Bu durumda, her zaman SKAdNetwork'ü tek atıf yöntemi olarak kullanın ve ön izin ekranı göstermeyin.

ATT'yi çağırmadan IDFA okuma

Önceden ATT izni olmadan ASIdentifierManager.shared().advertisingIdentifier aracılığıyla IDFA okumak, sıfırlardan oluşan bir dize döndürür. Bazı geliştiriciler, özel API'ler aracılığıyla IDFA'ya erişmenin eski yöntemlerini kullanmaya çalışır — bu, uygulama incelemesi sırasında reddedilmeyi garanti eder.

Apple, geçici çözümleri tespit etmek için statik kod analizi ve makine öğrenimi kullanır. Uygulama incelemeyi geçse bile, sonraki güncellemeler veya otomatik kontroller ihlali ortaya çıkarabilir ve geliştirici hesabının yasaklanmasına yol açabilir.

Yanlış NSUserTrackingUsageDescription metni

NSUserTrackingUsageDescription anahtarında çok uzun, belirsiz veya yanıltıcı bir metin, denetçiler tarafından reddedilme nedenidir. Apple, açıklamanın gerçek veri kullanımıyla eşleştiğini kontrol eder. Uygulamada reklam yoksa ancak “reklam amaçlı” belirtilmişse, denetçi yapıyı reddedecektir.

Önerilen biçim: IDFA kullanım amacının 2–3 cümlelik belirli bir açıklaması. Reklam içermeyen bir uygulama için örnek: “Tanımlayıcı, analiz ve dolandırıcılık önleme için kullanılır. Veriler üçüncü taraflarla paylaşılmaz ve profilleme için kullanılmaz.”

Sıkça Sorulan Sorular

Uygulamaya ATT eklenmezse ne olur?

Bir uygulama ATT olmadan IDFA veya izleme kullanıyorsa, Apple inceleme sırasında onu reddeder. İzleme olmasa bile, şeffaflık için ATT eklenmesi önerilir — aksi takdirde, her güncellemeyle ret riski artar.

Uygulama izleme rızası olmadan çalışır mı?

Evet, uygulama tamamen çalışır, ancak reklam ağları kişiselleştirme ve atıf için IDFA alamaz. Kişiselleştirilmiş reklamlar dışındaki tüm uygulama özellikleri kullanılabilir durumda kalır.

iOS'ta ATT durumu sıfırlanabilir mi?

Evet, kullanıcı kararını Ayarlar → Gizlilik → İzleme yoluyla istediği zaman değiştirebilir. Uygulama, durumu programlı olarak sıfırlayamaz — yalnızca sistem ayarları aracılığıyla.

ATT rıza oranı nasıl artırılır?

Yararı açıklayan bir ön izin ekranı kullanın ve izlemeyi ilk başlatmada değil, kullanıcı değerli bir eylem gerçekleştirdikten sonra talep edin. Meta (2024), gecikmeli taleplerle rızada %35 artış göstermiştir.

ATT çocuk uygulamalarını etkiler mi?

Apple kurallarına göre “Çocuklar” kategorisindeki uygulamalar, izleme için IDFA ve ATT kullanamaz. Ayrıca analiz veya reklamcılık için üçüncü taraflarla veri paylaşmaları da yasaktır.

Özet

  • ATT — App Tracking Transparency, iOS 14.5+'ta IDFA erişimi talep etmek için zorunlu çerçeve
  • IDFA — cihaz reklam tanımlayıcısı, yetkisiz erişime karşı ATT tarafından korunur
  • Sistem diyaloğu — kullanıcı her zaman uygulamanın değiştiremeyeceği veya atlayamayacağı bir diyalog görür
  • Ön izin — yararı açıklayan özel ekran, rızayı %20–40 artırır
  • SKAdNetwork — IDFA erişimi olmayan uygulamalar için Apple'ın tek atıf yöntemi
  • Dönüşüm — küresel rıza oranı %25–35, Avrupa'da GDPR sayesinde %50'ye kadar
  • Herhangi bir izleyiciyi çağırmadan önce ATT'yi entegre edin ve Info.plist'e NSUserTrackingUsageDescription anahtarını eklediğinizden emin olun

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