ATT iOS: co to je, mechanismus žádosti o sledování a IDFA

Autor: IT Sectr Publikováno: 2026-05-20 Doba čtení: 10 min

App Tracking Transparency (ATT) je mechanismus iOS, který vyžaduje výslovný souhlas uživatele pro přístup k reklamnímu identifikátoru IDFA před sledováním v aplikacích a na webech. Zavedený v iOS 14.5, ATT zavázal všechny vývojáře zobrazovat systémový dialog s žádostí o povolení sledování. Podle Apple Developer Documentation musí každá aplikace používající IDFA pro cílenou reklamu nebo atribuci integrovat framework ATT a získat přístupové oprávnění.

Hlavní body

  • ATT — App Tracking Transparency, framework pro žádost o sledování v iOS 14.5+
  • IDFA — reklamní identifikátor zařízení, jehož přístup je bez souhlasu omezen
  • Systémový dialog — standardní vyskakovací okno s textem aplikace, který nelze změnit
  • Povolení sledování — povinná žádost pro zobrazování reklam a atribuci instalací
  • Odmítnutí — uživatel může kdykoli odvolat povolení v Nastavení

Co je ATT (App Tracking Transparency)?

App Tracking Transparency je framework od Apple pro ochranu soukromí uživatelů, představený v iOS 14.5. Vyžaduje, aby aplikace získaly výslovné povolení pro přístup k reklamnímu identifikátoru zařízení (IDFA) před jeho použitím ke sledování.

Před příchodem ATT mohli vývojáři číst IDFA bez povolení, což umožňovalo reklamním sítím vytvářet profily uživatelů a sledovat jejich aktivitu mezi aplikacemi a weby. Apple nazval tento přístup porušením soukromí a zavedl povinný dialog souhlasu.

Framework je dostupný od iOS 14.0, ale povinným se stal pro všechny aplikace používající IDFA s vydáním iOS 14.5 v dubnu 2021. Podle Flurry Analytics po zavedení ATT poskytlo souhlas se sledováním méně než 25 % uživatelů v USA, což radikálně změnilo trh mobilní reklamy.

ATT kontroluje existenci povolení prostřednictvím speciálního systémového dialogu, který aplikace nemůže upravit nebo obejít. Uživatel vidí standardní vyskakovací okno s textem poskytnutým vývojářem a volí “Povolit” nebo “Požádat aplikaci, aby nesledovala”.

Jak ATT souvisí se soukromím v iOS

Apple staví ATT jako součást celkové strategie ochrany soukromí, která zahrnuje také Privacy Nutrition Label v App Store a Privacy Manifest. Všechny tři mechanismy pracují společně: štítky ukazují, jaká data aplikace shromažďuje, Manifest deklaruje důvody použití API a ATT dává uživateli kontrolu nad sledováním.

Odmítnutí sledování neblokuje provoz samotné aplikace — uživatel může nadále používat všechny funkce, ale reklamní sítě nezískají IDFA pro personalizaci a atribuci. Alternativami k IDFA se staly SKAdNetwork a Probabilistic Attribution od Apple.

Podle Branch Metrics po zavedení ATT klesl podíl aplikací přijímajících IDFA celosvětově ze 70 % na 20 %. To vedlo k přehodnocení přístupů k atribuci instalací a monetizaci prostřednictvím reklamy.

Změny v iOS 15 a 16

V iOS 15 Apple nezpřísnil požadavky ATT, ale přidal App Privacy Report — zprávu ukazující uživateli, jak často aplikace přistupují k senzorům a datům. iOS 16 rozšířil kontrolu: uživatel může kdykoli změnit nastavení sledování přes Nastavení → Soukromí → Sledování.

Důležité: pokud uživatel v dialogu ATT zvolí “Požádat aplikaci, aby nesledovala”, aplikace neobdrží hodnotu IDFA, místo ní je vrácen řetězec nul — 00000000-0000-0000-0000-000000000000. Pokus o přečtení IDFA jiným způsobem nebo pomocí obchůzných metod vede k odmítnutí aplikace v App Store.

Od iOS 17 Apple zesílil kontroly: pokud aplikace požaduje IDFA bez zobrazení systémového dialogu ATT, obdrží odmítnutí na úrovni OS, nejen prázdný identifikátor. To vylučuje možnost sběru IDFA na pozadí bez vědomí uživatele.

Jak funguje žádost o sledování v iOS

Proces žádosti ATT se skládá ze tří fází: kontrola stavu, zobrazení systémového dialogu a zpracování odpovědi. Vývojář nemůže přeskočit žádný krok — OS kontroluje každou fázi.

Kontrola stavu autorizace

Před vyvoláním dialogu musí aplikace zkontrolovat aktuální stav pomocí ATTrackingManager. Možné stavy jsou: notDetermined (dosud nepožádáno), restricted (zakázáno politikami zařízení), denied (uživatel odmítl), authorized (povoleno).

Pokud je stav již určen (authorized nebo denied), opětovné vyvolání dialogu není možné — uživatel učinil konečné rozhodnutí. Jediný způsob, jak změnit rozhodnutí, je prostřednictvím systémových nastavení iOS.

Pro kontrolu stavu se používá vlastnost ATTrackingManager.trackingAuthorizationStatus. Volání musí probíhat v hlavním vlákně, protože systémový dialog je komponentou uživatelského rozhraní.

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

Zobrazení systémového dialogu

Pro zobrazení dialogu se volá metoda requestTrackingAuthorization s uzávěrem, který obdrží výsledek volby uživatele. Důležité: dialog se zobrazí pouze jednou. Pokud se vývojář pokusí jej vyvolat znovu, systém požadavek ignoruje.

Text v dialogu se skládá ze dvou částí: systémový titulek (nelze změnit) a vlastní zpráva, kterou vývojář uvede v Info.plist pomocí klíče NSUserTrackingUsageDescription.

Dialog by se měl objevit v přirozeném kontextu — ne ihned při spuštění aplikace, ale při prvním pokusu o použití funkcionality související se sledováním. Apple doporučuje zobrazit dialog poté, co uživatel pochopil hodnotu funkce.

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("Uživatel odmítl sledování")
            default:
                break
            }
        }
    }
}

IDFA a omezení přístupu

IDFA (Identifier for Advertisers) je jedinečný reklamní identifikátor zařízení iOS, používaný pro cílenou reklamu a atribuci instalací. Před ATT jej vývojáři získávali prostřednictvím ASIdentifierManager bez omezení. Po zavedení ATT je přístup k IDFA blokován, dokud uživatel neposkytne výslovný souhlas.

Co je IDFA a k čemu slouží

IDFA je řetězec UUID, jedinečný pro každé zařízení iOS. Reklamní sítě používají IDFA pro: sledování instalací aplikací (atribuce), zobrazování relevantních reklam na základě zájmů uživatele, měření účinnosti reklamních kampaní a retargeting — vrácení uživatelů, kteří nedokončili cílovou akci.

Po odmítnutí sledování uživatelem ASIdentifierManager vrací hodnotu 00000000-0000-0000-0000-000000000000. Aplikace však stále může číst IDFA pro technické účely (např. ochrana proti podvodům), ale nesmí jej předávat reklamním sítím.

Podle Singular (2024) je celosvětová míra souhlasu s ATT 25–35 %, přičemž v Evropě (GDPR) je ukazatel vyšší (40–50 %) než v USA (15–25 %). To donutilo reklamní platformy vyvinout alternativní metody atribuce.

Alternativy k IDFA: SKAdNetwork a Probabilistic Attribution

SKAdNetwork je framework od Apple pro atribuci instalací bez odhalení IDFA. Funguje na úrovni OS: reklamní síť odešle podepsaný postback, který Apple ověří a předá vývojáři. Atribuce probíhá bez identifikace konkrétního uživatele, pouze na úrovni kampaně.

Probabilistic Attribution využívá mnoho signálů zařízení — model, verzi iOS, časové pásmo, jas obrazovky — pro pravděpodobnostní párování instalací s reklamními zobrazeními. Apple však tuto metodu ve svých pravidlech zakazuje a její použití může vést k odmítnutí aplikace.

Google, Adjust a AppsFlyer vyvinuly vlastní hybridní řešení kombinující SKAdNetwork s vlastními agregovanými daty. Například Google Ads Conversion Tracking používá postbacky SKAdNetwork a vlastní modely strojového učení pro atribuci bez IDFA.

Implementace ATT v kódu aplikace

Pro integraci ATT je třeba přidat klíč NSUserTrackingUsageDescription do Info.plist a importovat framework AppTrackingTransparency. Níže jsou uvedeny kroky pro Swift a Objective-C.

Nastavení Info.plist

První krok — přidání klíče NSUserTrackingUsageDescription do Info.plist s textem vysvětlujícím, proč aplikace potřebuje sledování. Tento text se zobrazí v systémovém dialogu. Příklad: “Váš IDFA se používá k zobrazování personalizovaných reklam a sledování účinnosti kampaní”.

Bez tohoto klíče způsobí volání requestTrackingAuthorization pád aplikace — Apple explicitně kontroluje přítomnost NSUserTrackingUsageDescription před zobrazením dialogu. Text musí být stručný, konkrétní a odpovídat skutečnému použití dat.

Důležité: klíč se přidává ručně přes záložku Info v Xcode nebo úpravou XML zdroje Info.plist. Po přidání projekt znovu sestavte a zkontrolujte, že se klíč objevuje ve výsledném binárním souboru.

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

Plná integrace ve Swift

V reálném projektu je lepší volat žádost ATT před prvním spuštěním reklamního modulu nebo trackeru. Doporučuje se nejprve vysvětlit uživateli hodnotu souhlasu na samostatné obrazovce (pre-permission prompt) — to zvyšuje procento souhlasů o 20–30 %.

Pre-permission prompt je vlastní UI, které ukazuje výhodu zapnutí sledování (“Pomozte nám zobrazovat relevantní reklamy”). Teprve po stisknutí tlačítka “Pokračovat” je vyvolán systémový dialog ATT. Adjust (2024) zaznamenal nárůst souhlasu o 40 % při použití pre-permission obrazovky.

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

Chyby při práci s ATT

Vývojáři často dělají typické chyby při integraci ATT, které vedou ke snížení konverze souhlasů nebo k odmítnutí aplikace moderátory App Store. Podívejme se na pět nejčastějších problémů.

Žádost ATT ihned po spuštění aplikace

Nejčastější chyba — zobrazení systémového dialogu ATT na první obrazovce po načtení aplikace. Uživatel ještě nechápe hodnotu aplikace a s vysokou pravděpodobností stiskne “Odmítnout”. IronSource (2023) ukázal snížení souhlasu o 32 % při žádosti na první obrazovce ve srovnání s žádostí po třetí relaci.

Doporučení: žádejte o sledování poté, co uživatel provedl cílovou akci (zobrazil obsah, zahájil onboardingu) nebo po 3–5 relacích používání aplikace. To zvyšuje důvěru a povědomí o hodnotě.

Absence pre-permission obrazovky

Zobrazení systémového dialogu ATT bez předchozího vysvětlení — chyba, která snižuje konverzi na 15–20 %. Uživatel vidí neočekávanou žádost a instinktivně odmítá. Pre-permission obrazovka s vysvětlením výhody zvyšuje souhlas na 35–45 %.

Text pre-permission musí být konkrétní: “Povolte zobrazování relevantních reklam — pomáhá nám to zůstat zdarma”. Vyhýbejte se obecným frázím — snižují důvěru. GameAnalytics v roce 2023 ukázal, že pre-permission s vysvětlením výhody poskytuje o 28 % více souhlasů než prázdná obrazovka.

Ignorování stavů restricted a denied

Pokud uživatel již sledování odmítl nebo je stav restricted (rodičovská kontrola, firemní politiky), aplikace by neměla znovu vyvolávat dialog ATT. Opakované vyvolání nefunguje a je vnímáno jako porušení soukromí. Místo toho přejděte na SKAdNetwork a kontextovou reklamu.

Ve stavu restricted aplikace nemůže zjistit, zda je možnost “Povolit žádosti o sledování” zapnuta v nastavení. V tomto případě vždy používejte atribuci bez alternativy prostřednictvím SKAdNetwork a nezobrazujte pre-permission obrazovku.

Kontrola IDFA bez volání ATT

Čtení IDFA přes ASIdentifierManager.shared().advertisingIdentifier bez předchozího povolení ATT vrací řetězec nul. Někteří vývojáři se pokoušejí používat staré metody přístupu k IDFA přes soukromá API — to garantovaně vede k odmítnutí aplikace při revizi.

Apple používá statický analyzátor kódu a strojové učení k detekci obchůzných cest. I když aplikace projde revizí, následné aktualizace nebo automatické kontroly mohou odhalit porušení a vést k zablokování účtu vývojáře.

Nesprávný text v NSUserTrackingUsageDescription

Příliš dlouhý, vágní nebo zavádějící text v klíči NSUserTrackingUsageDescription — důvod k odmítnutí aplikace moderátory. Apple kontroluje, zda popis odpovídá skutečnému použití dat. Pokud aplikace neobsahuje reklamy, ale uvádí “pro reklamní účely”, moderátor build odmítne.

Doporučený formát: konkrétní popis účelu použití IDFA o délce 2–3 vět. Příklad pro aplikaci bez reklam: “Identifikátor se používá pro analýzu a prevenci podvodů. Data nejsou předávána třetím stranám a nejsou použita pro profilování”.

Často kladené otázky

Co se stane, když do aplikace nepřidám ATT?

Pokud aplikace používá IDFA nebo sledování bez ATT, Apple ji odmítne v procesu revize. I při absenci sledování se doporučuje přidat ATT pro transparentnost, jinak riziko odmítnutí při příští aktualizaci roste.

Funguje aplikace bez souhlasu se sledováním?

Ano, aplikace funguje plně, ale reklamní sítě nezískají IDFA pro personalizaci a atribuci. Všechny funkce aplikace kromě personalizovaných reklam zůstávají dostupné.

Lze resetovat stav ATT v iOS?

Ano, uživatel může kdykoli změnit rozhodnutí přes Nastavení → Soukromí → Sledování. Aplikace nemůže programově resetovat stav — pouze přes systémová nastavení.

Jak zvýšit procento souhlasů s ATT?

Použijte pre-permission obrazovku s vysvětlením výhody, žádejte o sledování ne při prvním spuštění, ale po provedení cílové akce. Meta (2024) ukázala nárůst souhlasů o 35 % při odložené žádosti.

Ovlivňuje ATT aplikace pro děti?

Aplikace v kategorii “Pro děti” nemohou používat IDFA a ATT pro sledování podle pravidel Apple. Rovněž mají zakázáno předávat data třetím stranám pro analýzu nebo reklamu.

Shrnutí

  • ATT — App Tracking Transparency, povinný framework pro žádost o přístup k IDFA v iOS 14.5+
  • IDFA — reklamní identifikátor zařízení, chráněný ATT před neoprávněným přístupem
  • Systémový dialog — uživatel vždy vidí dialog, který aplikace nemůže změnit ani obejít
  • Pre-permission — vlastní obrazovka vysvětlení výhody, zvyšuje souhlas o 20–40 %
  • SKAdNetwork — atribuce bez alternativy od Apple pro aplikace bez přístupu k IDFA
  • Konverze — celosvětová míra souhlasu je 25–35 %, v Evropě až 50 % díky GDPR
  • Integrujte ATT před voláním jakéhokoli trackeru a nezapomeňte přidat klíč NSUserTrackingUsageDescription do Info.plist

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také