App Tracking Transparency (ATT) är en iOS-mekanism som kräver uttryckligt samtycke från användaren för att få tillgång till reklamidentifikatorn IDFA före spårning i appar och på webbplatser. Infört i iOS 14.5 ålägger ATT alla utvecklare att visa en systemdialogruta med begäran om spårningstillstånd. Enligt Apple Developer Documentation måste varje app som använder IDFA för riktad reklam eller attribuering integrera ATT-ramverket och få åtkomstbehörighet.
Huvudpunkter
App Tracking Transparency är ett ramverk från Apple för att skydda användarnas integritet, introducerat i iOS 14.5. Det kräver att appar får uttryckligt tillstånd för att få tillgång till enhetens reklamidentifikator (IDFA) innan de använder den för spårning.
Före ATT kunde utvecklare läsa IDFA utan tillstånd, vilket gjorde det möjligt för annonsnätverk att bygga användarprofiler och spåra deras aktivitet mellan appar och webbplatser. Apple kallade detta tillvägagångssätt för en integritetskränkning och införde den obligatoriska samtyckesdialogrutan.
Ramverket är tillgängligt från iOS 14.0, men blev obligatoriskt för alla appar som använder IDFA med lanseringen av iOS 14.5 i april 2021. Enligt Flurry Analytics gav efter införandet av ATT mindre än 25% av användarna i USA samtycke till spårning, vilket radikalt förändrade marknaden för mobil reklam.
ATT kontrollerar förekomsten av tillstånd via en särskild systemdialogruta som appen inte kan modifiera eller kringgå. Användaren ser en standard popup med text som tillhandahålls av utvecklaren och väljer “Tillåt” eller “Be appen att inte spåra”.
Apple positionerar ATT som en del av en övergripande integritetsstrategi, som även inkluderar Privacy Nutrition Label i App Store och Privacy Manifest. Alla tre mekanismerna fungerar tillsammans: etiketterna visar vilka data appen samlar in, Manifestet deklarerar orsakerna till API-användning, och ATT ger användaren kontroll över spårning.
Att avvisa spårning blockerar inte själva appens funktion — användaren kan fortsätta använda alla funktioner, men annonsnätverken får inte IDFA för personalisering och attribuering. Alternativ till IDFA blev SKAdNetwork och Probabilistic Attribution från Apple.
Enligt Branch Metrics sjönk efter införandet av ATT andelen appar som får IDFA globalt från 70% till 20%. Detta ledde till en omprövning av metoder för installationsattribuering och intäktsgenerering genom annonsering.
I iOS 15 skärpte Apple inte ATT-kraven, men lade till App Privacy Report — en rapport som visar användaren hur ofta appar får åtkomst till sensorer och data. iOS 16 utökade kontrollen: användaren kan när som helst ändra spårningsinställningarna via Inställningar → Integritet → Spårning.
Viktigt: om användaren väljer “Be appen att inte spåra” i ATT-dialogrutan får appen inte IDFA-värdet, utan istället returneras en sträng med nollor — 00000000-0000-0000-0000-000000000000. Försök att läsa IDFA på annat sätt eller via kringgångsmetoder leder till att appen avvisas i App Store.
Från och med iOS 17 har Apple skärpt kontrollerna: om en app begär IDFA utan att visa ATT-systemdialogrutan får den ett avvisande på OS-nivå, inte bara en tom identifierare. Detta utesluter möjligheten till bakgrundsinsamling av IDFA utan användarens vetskap.
Processen för ATT-begäran består av tre steg: statuskontroll, visning av systemdialogrutan och bearbetning av svar. Utvecklaren kan inte hoppa över något steg — operativsystemet kontrollerar varje steg.
Innan dialogrutan anropas måste appen kontrollera aktuell status via ATTrackingManager. Möjliga statusar är: notDetermined (ännu inte begärt), restricted (förbjudet av enhetspolicy), denied (användaren avvisade), authorized (tillåtet).
Om statusen redan är bestämd (authorized eller denied) är det inte möjligt att anropa dialogrutan igen — användaren har fattat ett slutgiltigt beslut. Det enda sättet att ändra beslutet är via iOS-systeminställningar.
För att kontrollera statusen används egenskapen ATTrackingManager.trackingAuthorizationStatus. Anropet måste ske på huvudtråden eftersom systemdialogrutan är en UI-komponent.
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
}
}
För att visa dialogrutan anropas metoden requestTrackingAuthorization med en closure som tar emot resultatet av användarens val. Viktigt: dialogrutan visas endast en gång. Om utvecklaren försöker anropa den igen ignorerar systemet begäran.
Texten i dialogrutan består av två delar: systemrubriken (kan inte ändras) och ett anpassat meddelande som utvecklaren anger i Info.plist via nyckeln NSUserTrackingUsageDescription.
Dialogrutan bör visas i ett naturligt sammanhang — inte omedelbart vid appstart, utan vid första försöket att använda funktionalitet relaterad till spårning. Apple rekommenderar att visa dialogrutan efter att användaren har förstått funktionens värde.
func requestTrackingPermission() {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
switch status {
case .authorized:
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa)")
case .denied:
print("Användaren nekade spårning")
default:
break
}
}
}
}
IDFA (Identifier for Advertisers) är en unik reklamidentifikator för iOS-enheter, som används för riktad reklam och installationsattribuering. Före ATT fick utvecklare den via ASIdentifierManager utan begränsningar. Efter införandet av ATT blockeras åtkomst till IDFA tills användaren ger uttryckligt samtycke.
IDFA är en UUID-sträng, unik för varje iOS-enhet. Annonsnätverk använder IDFA för: spårning av appinstallationer (attribuering), visning av relevanta annonser baserat på användarens intressen, mätning av annonskampanjers effektivitet och retargeting — att locka tillbaka användare som inte slutförde en målåtgärd.
Efter att användaren avvisat spårning returnerar ASIdentifierManager värdet 00000000-0000-0000-0000-000000000000. Appen kan dock fortfarande läsa IDFA för tekniska ändamål (t.ex. bedrägeribekämpning), men får inte vidarebefordra det till annonsnätverk.
Enligt Singular (2024) är den globala ATT-samtyckesnivån 25-35%, medan Europa (GDPR) har högre siffror (40-50%) än USA (15-25%). Detta har tvingat annonsplattformar att utveckla alternativa attribueringsmetoder.
SKAdNetwork är ett ramverk från Apple för installationsattribuering utan att avslöja IDFA. Det fungerar på OS-nivå: annonsnätverket skickar en signerad postback som Apple verifierar och vidarebefordrar till utvecklaren. Attribuering sker utan identifiering av specifik användare, endast på kampanjnivå.
Probabilistic Attribution använder flera enhetssignaler — modell, iOS-version, tidszon, skärmljusstyrka — för probabilistisk matchning av installationer med annonsvisningar. Apple förbjuder dock denna metod i sina regler och dess användning kan leda till avvisande av appen.
Google, Adjust och AppsFlyer har utvecklat egna hybridlösningar som kombinerar SKAdNetwork med egna aggregerade data. Till exempel använder Google Ads Conversion Tracking SKAdNetwork-postbacks och egna maskininlärningsmodeller för attribuering utan IDFA.
För ATT-integration måste du lägga till nyckeln NSUserTrackingUsageDescription i Info.plist och importera ramverket AppTrackingTransparency. Nedan följer stegen för Swift och Objective-C.
Första steget — lägg till nyckeln NSUserTrackingUsageDescription i Info.plist med en text som förklarar varför appen behöver spårning. Denna text kommer att visas i systemdialogrutan. Exempel: “Din IDFA används för att visa personliga annonser och följa kampanjeffektivitet”.
Utan denna nyckel kommer anropet till requestTrackingAuthorization att orsaka en krasch — Apple kontrollerar uttryckligen förekomsten av NSUserTrackingUsageDescription innan dialogrutan visas. Texten måste vara kort, specifik och motsvara den faktiska användningen av data.
Viktigt: nyckeln läggs till manuellt via Xcodes Info-flik eller genom att redigera XML-källan för Info.plist. Efter tillägg, bygg om projektet och kontrollera att nyckeln visas i den slutliga binären.
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>
I ett verkligt projekt är det bättre att anropa ATT-begäran före den första starten av annonsmodulen eller trackern. Det rekommenderas att förklara värdet av samtycke för användaren i förväg på en separat skärm (pre-permission prompt) — detta ökar samtyckesprocenten med 20-30%.
En pre-permission prompt är ett eget UI som visar fördelen med att aktivera spårning (“Hjälp oss att visa relevanta annonser”). Först efter att knappen “Fortsätt” trycks anropas ATT-systemdialogrutan. Adjust (2024) registrerade en ökning av samtycke med 40% vid användning av pre-permission-skärm.
final class TrackingManager {
static let shared = TrackingManager()
func requestTrackingIfNeeded() {
guard ATTrackingManager.trackingAuthorizationStatus
== .notDetermined
else { return }
ATTrackingManager.requestTrackingAuthorization { _ in
NotificationCenter.default.post(
Notification(Name("trackingStatusChanged"))
)
}
}
}
Utvecklare gör ofta typiska misstag vid ATT-integrering som leder till minskad samtyckeskonvertering eller avvisande av appen av App Store-moderatorer. Låt oss titta på de fem vanligaste problemen.
Det vanligaste misstaget — att visa ATT-systemdialogrutan på första skärmen efter att appen laddats. Användaren förstår ännu inte appens värde och trycker med stor sannolikhet på “Avvisa”. IronSource (2023) visade en minskning av samtycke med 32% vid begäran på första skärmen jämfört med begäran efter den tredje sessionen.
Rekommendation: be om spårning efter att användaren har utfört en målåtgärd (sett innehåll, påbörjat introduktion) eller efter 3-5 sessions användning av appen. Detta ökar förtroendet och medvetenheten om värdet.
Att visa ATT-systemdialogrutan utan föregående förklaring — ett misstag som sänker konverteringen till 15-20%. Användaren ser en oväntad begäran och avvisar instinktivt. En pre-permission-skärm med förklaring av fördelen ökar samtycket till 35-45%.
Pre-permission-texten måste vara specifik: “Tillåt relevanta annonser — det hjälper oss att förbli gratis”. Undvik allmänna fraser — de minskar förtroendet. GameAnalytics visade 2023 att pre-permission med förklaring av fördelen ger 28% fler samtycken än en tom skärm.
Om användaren redan har avvisat spårning eller statusen är restricted (föräldrakontroll, företagspolicy) bör appen inte anropa ATT-dialogrutan igen. Upprepat anrop fungerar inte och uppfattas som en integritetskränkning. Gå istället över till SKAdNetwork och kontextuell annonsering.
I restricted-status kan appen inte avgöra om alternativet “Tillåt spårningsbegäranden” är aktiverat i inställningarna. I detta fall, använd alltid attribuering utan alternativ via SKAdNetwork och visa inte pre-permission-skärmen.
Att läsa IDFA via ASIdentifierManager.shared().advertisingIdentifier utan föregående ATT-tillstånd returnerar en nollsträng. Vissa utvecklare försöker använda gamla metoder för IDFA-åtkomst via privata API:er — detta leder garanterat till avvisning av appen vid granskning.
Apple använder statisk kodanalysator och maskininlärning för att upptäcka kringgångar. Även om appen passerar granskning kan efterföljande uppdateringar eller automatiska kontroller avslöja överträdelsen och leda till att utvecklarkontot stängs av.
För lång, vag eller vilseledande text i nyckeln NSUserTrackingUsageDescription — en anledning till att appen avvisas av moderatorer. Apple kontrollerar att beskrivningen motsvarar den faktiska datanvändningen. Om appen inte har annonser men anger “för reklamändamål” kommer moderatorn att avvisa bygget.
Rekommenderat format: en specifik beskrivning av syftet med IDFA-användning på 2-3 meningar. Exempel för en app utan annonser: “Identifieraren används för analys och bedrägeriförebyggande. Data överförs inte till tredje part och används inte för profilering”.
Vanliga frågor
Om appen använder IDFA eller spårning utan ATT kommer Apple att avvisa den under granskningsprocessen. Även utan spårning rekommenderas att lägga till ATT för transparens, annars ökar risken för avvisning vid nästa uppdatering.
Ja, appen fungerar fullt ut, men annonsnätverken får inte IDFA för personalisering och attribuering. Alla funktioner i appen, förutom personliga annonser, förblir tillgängliga.
Ja, användaren kan när som helst ändra beslutet via Inställningar → Integritet → Spårning. Appen kan inte programmatiskt återställa statusen — endast via systeminställningar.
Använd en pre-permission-skärm med förklaring av fördelen, be om spårning inte vid första starten utan efter att en målåtgärd utförts. Meta (2024) visade en ökning av samtycke med 35% vid fördröjd begäran.
Appar i kategorin “För barn” får inte använda IDFA och ATT för spårning enligt Apples regler. De har också förbjudet att överföra data till tredje part för analys eller reklam.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också