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
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”.
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.
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.
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.
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í.
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
}
}
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.
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 (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.
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.
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.
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.
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.
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>
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.
final class TrackingManager {
static let shared = TrackingManager()
func requestTrackingIfNeeded() {
guard ATTrackingManager.trackingAuthorizationStatus
== .notDetermined
else { return }
ATTrackingManager.requestTrackingAuthorization { _ in
NotificationCenter.default.post(
Notification(Name("trackingStatusChanged"))
)
}
}
}
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ů.
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ě.
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.
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.
Č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.
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
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.
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é.
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í.
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.
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í
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í.
Přečtěte si také