App Tracking Transparency (ATT) is een iOS-mechanisme dat expliciete toestemming van de gebruiker vereist voor toegang tot de reclame-ID IDFA voordat tracking in apps en op websites plaatsvindt. Geïntroduceerd in iOS 14.5, verplicht ATT alle ontwikkelaars om een systeemdialoogvenster te tonen met een verzoek om toestemming voor tracking. Volgens Apple Developer Documentation moet elke app die IDFA gebruikt voor gerichte advertenties of attributie, het ATT-framework integreren en toegangstoestemming verkrijgen.
Belangrijkste punten
App Tracking Transparency is een framework van Apple voor de bescherming van de privacy van gebruikers, geïntroduceerd in iOS 14.5. Het vereist dat apps expliciete toestemming krijgen voor toegang tot de reclame-ID van het apparaat (IDFA) voordat ze deze gebruiken voor tracking.
Vóór de komst van ATT konden ontwikkelaars IDFA lezen zonder toestemming, waardoor advertentienetwerken gebruikersprofielen konden opbouwen en hun activiteit tussen apps en websites konden volgen. Apple noemde deze aanpak een schending van de privacy en voerde de verplichte toestemmingsdialoog in.
Het framework is beschikbaar vanaf iOS 14.0, maar werd verplicht voor alle apps die IDFA gebruiken met de release van iOS 14.5 in april 2021. Volgens Flurry Analytics gaf na de invoering van ATT minder dan 25% van de Amerikaanse gebruikers toestemming voor tracking, wat de markt voor mobiele advertenties fundamenteel veranderde.
ATT controleert de aanwezigheid van toestemming via een speciaal systeemdialoogvenster dat de app niet kan wijzigen of omzeilen. De gebruiker ziet een standaard pop-up met de door de ontwikkelaar verstrekte tekst en kiest “Toestaan” of “App vragen niet te volgen”.
Apple positioneert ATT als onderdeel van een algemene privacystrategie, die ook Privacy Nutrition Label in de App Store en Privacy Manifest omvat. Alle drie mechanismen werken samen: labels tonen welke gegevens de app verzamelt, het Manifest verklaart de redenen voor API-gebruik, en ATT geeft de gebruiker controle over tracking.
Het weigeren van tracking blokkeert de werking van de app niet — de gebruiker kan alle functies blijven gebruiken, maar advertentienetwerken krijgen geen IDFA voor personalisatie en attributie. Alternatieven voor IDFA werden SKAdNetwork en Probabilistic Attribution van Apple.
Volgens Branch Metrics daalde na de invoering van ATT het aandeel apps dat IDFA ontvangt wereldwijd van 70% naar 20%. Dit leidde tot een heroverweging van de aanpak van installatie-attributie en monetisatie via advertenties.
In iOS 15 heeft Apple de ATT-vereisten niet aangescherpt, maar wel App Privacy Report toegevoegd — een rapport dat de gebruiker laat zien hoe vaak apps toegang krijgen tot sensoren en gegevens. iOS 16 breidde de controle uit: de gebruiker kan op elk moment de tracking-instellingen wijzigen via Instellingen → Privacy → Tracking.
Belangrijk: als de gebruiker kiest voor “App vragen niet te volgen” in het ATT-dialoogvenster, ontvangt de app geen IDFA-waarde, maar wordt in plaats daarvan een reeks nullen geretourneerd — 00000000-0000-0000-0000-000000000000. Pogingen om IDFA op een andere manier of via omwegen te lezen, leiden tot afwijzing van de app in de App Store.
Vanaf iOS 17 heeft Apple de controles verscherpt: als een app IDFA opvraagt zonder het systeem-dialoogvenster ATT weer te geven, krijgt deze een weigering op OS-niveau, niet alleen een lege ID. Dit sluit de mogelijkheid van het op de achtergrond verzamelen van IDFA zonder medeweten van de gebruiker uit.
Het ATT-aanvraagproces bestaat uit drie fasen: statuscontrole, weergave van het systeemdialoogvenster en verwerking van het antwoord. De ontwikkelaar kan geen enkele stap overslaan — het besturingssysteem controleert elke fase.
Voordat het dialoogvenster wordt aangeroepen, moet de app de huidige status controleren via ATTrackingManager. Mogelijke statussen: notDetermined (nog niet aangevraagd), restricted (verboden door apparaatbeleid), denied (gebruiker heeft geweigerd), authorized (toegestaan).
Als de status al is bepaald (authorized of denied), is het niet mogelijk het dialoogvenster opnieuw aan te roepen — de gebruiker heeft een definitieve keuze gemaakt. De enige manier om de beslissing te wijzigen is via de systeeminstellingen van iOS.
Voor het controleren van de status wordt de eigenschap ATTrackingManager.trackingAuthorizationStatus gebruikt. De aanroep moet op de hoofdthread plaatsvinden, omdat het systeemdialoogvenster een UI-component is.
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
}
}
Voor het tonen van het dialoogvenster wordt de methode requestTrackingAuthorization aangeroepen met een closure die het resultaat van de gebruikerskeuze ontvangt. Belangrijk: het dialoogvenster wordt slechts eenmaal weergegeven. Als de ontwikkelaar probeert het opnieuw aan te roepen, negeert het systeem het verzoek.
De tekst in het dialoogvenster bestaat uit twee delen: een systeemtitel (die niet kan worden gewijzigd) en een aangepast bericht dat de ontwikkelaar in Info.plist opgeeft via de sleutel NSUserTrackingUsageDescription.
Het dialoogvenster moet in een natuurlijke context verschijnen — niet direct bij het starten van de app, maar bij de eerste poging om functionaliteit met betrekking tot tracking te gebruiken. Apple raadt aan het dialoogvenster te tonen nadat de gebruiker de waarde van de functie heeft begrepen.
func requestTrackingPermission() {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
switch status {
case .authorized:
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa)")
case .denied:
print("Gebruiker heeft tracking geweigerd")
default:
break
}
}
}
}
IDFA (Identifier for Advertisers) is een unieke reclame-ID van het iOS-apparaat, gebruikt voor gerichte advertenties en installatie-attributie. Vóór ATT verkregen ontwikkelaars deze via ASIdentifierManager zonder beperkingen. Na de invoering van ATT wordt de toegang tot IDFA geblokkeerd totdat de gebruiker expliciete toestemming geeft.
IDFA is een UUID-string, uniek voor elk iOS-apparaat. Advertentienetwerken gebruiken IDFA voor: het volgen van app-installaties (attributie), het tonen van relevante advertenties op basis van gebruikersinteresses, het meten van de effectiviteit van advertentiecampagnes en retargeting — het terugbrengen van gebruikers die een doelactie niet hebben voltooid.
Nadat de gebruiker tracking heeft geweigerd, retourneert ASIdentifierManager de waarde 00000000-0000-0000-0000-000000000000. De app kan nog steeds IDFA lezen voor technische doeleinden (bijvoorbeeld fraudepreventie), maar mag deze niet doorgeven aan advertentienetwerken.
Volgens Singular (2024) ligt het wereldwijde ATT-toestemmingspercentage op 25-35%, waarbij Europa (GDPR) hoger scoort (40-50%) dan de VS (15-25%). Dit heeft advertentieplatforms gedwongen alternatieve attributiemethoden te ontwikkelen.
SKAdNetwork is een framework van Apple voor installatie-attributie zonder IDFA prijs te geven. Het werkt op OS-niveau: het advertentienetwerk stuurt een ondertekende postback die Apple controleert en doorgeeft aan de ontwikkelaar. Attributie vindt plaats zonder identificatie van de specifieke gebruiker, alleen op campagneniveau.
Probabilistic Attribution gebruikt meerdere apparaatsignalen — model, iOS-versie, tijdzone, schermhelderheid — voor probabilistische matching van installaties met advertentievertoningen. Apple verbiedt deze methode echter in haar regels en het gebruik ervan kan leiden tot afwijzing van de app.
Google, Adjust en AppsFlyer hebben hun eigen hybride oplossingen ontwikkeld die SKAdNetwork combineren met eigen geaggregeerde gegevens. Google Ads Conversion Tracking gebruikt bijvoorbeeld SKAdNetwork-postbacks en eigen machine learning-modellen voor attributie zonder IDFA.
Voor ATT-integratie moet de sleutel NSUserTrackingUsageDescription aan Info.plist worden toegevoegd en het framework AppTrackingTransparency worden geïmporteerd. Hieronder staan de stappen voor Swift en Objective-C.
De eerste stap is het toevoegen van de sleutel NSUserTrackingUsageDescription aan Info.plist met tekst die uitlegt waarom de app tracking nodig heeft. Deze tekst wordt weergegeven in het systeemdialoogvenster. Voorbeeld: “Uw IDFA wordt gebruikt voor het tonen van gepersonaliseerde advertenties en het volgen van campagne-effectiviteit”.
Zonder deze sleutel leidt de aanroep van requestTrackingAuthorization tot een crash van de app — Apple controleert expliciet op de aanwezigheid van NSUserTrackingUsageDescription voordat het dialoogvenster wordt getoond. De tekst moet beknopt, specifiek en in overeenstemming met het daadwerkelijke gebruik van gegevens zijn.
Belangrijk: de sleutel wordt handmatig toegevoegd via Xcode Info tab of door het bewerken van de XML-bron van Info.plist. Na toevoeging, herbouw het project en controleer of de sleutel in het uiteindelijke binaire bestand verschijnt.
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>
In een echt project is het beter om het ATT-verzoek aan te roepen vóór de eerste start van de advertentiemodule of tracker. Het wordt aanbevolen om de gebruiker vooraf de waarde van toestemming uit te leggen op een apart scherm (pre-permission prompt) — dit verhoogt het toestemmingspercentage met 20-30%.
Een pre-permission prompt is een eigen UI die het voordeel van het inschakelen van tracking toont (“Help ons relevante advertenties te tonen”). Pas na het indrukken van de knop “Doorgaan” wordt het ATT-systeemdialoogvenster aangeroepen. Adjust (2024) registreerde een toename van 40% in toestemming bij gebruik van een pre-permission-scherm.
final class TrackingManager {
static let shared = TrackingManager()
func requestTrackingIfNeeded() {
guard ATTrackingManager.trackingAuthorizationStatus
== .notDetermined
else { return }
ATTrackingManager.requestTrackingAuthorization { _ in
NotificationCenter.default.post(
Notification(Name("trackingStatusChanged"))
)
}
}
}
Ontwikkelaars maken vaak typische fouten bij ATT-integratie die leiden tot een lagere toestemmingsconversie of afwijzing van de app door App Store-moderatoren. Laten we de vijf meest voorkomende problemen bespreken.
De meest voorkomende fout is het tonen van het ATT-systeemdialoogvenster op het eerste scherm na het laden van de app. De gebruiker begrijpt de waarde van de app nog niet en drukt met grote waarschijnlijkheid op “Weigeren”. IronSource (2023) toonde een daling van 32% in toestemming bij een verzoek op het eerste scherm vergeleken met een verzoek na de derde sessie.
Aanbeveling: vraag om tracking nadat de gebruiker een doelactie heeft uitgevoerd (inhoud bekeken, onboarding gestart) of na 3-5 sessies gebruik van de app. Dit verhoogt het vertrouwen en het begrip van de waarde.
Het tonen van het ATT-systeemdialoogvenster zonder voorafgaande uitleg is een fout die de conversie verlaagt tot 15-20%. De gebruiker ziet een onverwacht verzoek en weigert instinctief. Een pre-permission-scherm met uitleg van het voordeel verhoogt de toestemming tot 35-45%.
De pre-permission-tekst moet specifiek zijn: “Sta relevante advertenties toe — dit helpt ons gratis te blijven”. Vermijd algemene zinnen — ze verminderen het vertrouwen. GameAnalytics toonde in 2023 aan dat pre-permission met uitleg van het voordeel 28% meer toestemming oplevert dan een leeg scherm.
Als de gebruiker tracking al heeft geweigerd of de status restricted is (ouderlijk toezicht, bedrijfsbeleid), mag de app het ATT-dialoogvenster niet opnieuw aanroepen. Een herhaalde aanroep werkt niet en wordt gezien als een schending van de privacy. Schakel in plaats daarvan over op SKAdNetwork en contextuele advertenties.
In de status restricted kan de app niet bepalen of de optie “Volgverzoeken toestaan” is ingeschakeld in de instellingen. Gebruik in dit geval altijd attributie zonder alternatief via SKAdNetwork en toon geen pre-permission-scherm.
Het lezen van IDFA via ASIdentifierManager.shared().advertisingIdentifier zonder voorafgaande ATT-toestemming retourneert een reeks nullen. Sommige ontwikkelaars proberen oude methoden voor toegang tot IDFA via privé-API's te gebruiken — dit leidt gegarandeerd tot afwijzing van de app bij beoordeling.
Apple gebruikt een statische code-analysator en machine learning om omwegen te detecteren. Zelfs als de app door de beoordeling komt, kunnen latere updates of geautomatiseerde controles de overtreding aan het licht brengen en leiden tot een verbod van het ontwikkelaarsaccount.
Een te lange, vage of misleidende tekst in de sleutel NSUserTrackingUsageDescription is een reden voor afwijzing van de app door moderatoren. Apple controleert of de beschrijving overeenkomt met het daadwerkelijke gebruik van gegevens. Als de app geen advertenties bevat, maar “voor advertentiedoeleinden” vermeldt, zal de moderator de build afwijzen.
Aanbevolen formaat: een specifieke beschrijving van het doel van IDFA-gebruik in 2-3 zinnen. Voorbeeld voor een app zonder advertenties: “De ID wordt gebruikt voor analyse en fraude preventie. Gegevens worden niet aan derden verstrekt en niet gebruikt voor profilering”.
Veelgestelde vragen
Als de app IDFA of tracking gebruikt zonder ATT, zal Apple deze afwijzen tijdens het beoordelingsproces. Zelfs bij afwezigheid van tracking wordt aanbevolen ATT toe te voegen voor transparantie, anders neemt het risico op afwijzing bij een volgende update toe.
Ja, de app werkt volledig, maar advertentienetwerken krijgen geen IDFA voor personalisatie en attributie. Alle functies van de app, behalve gepersonaliseerde advertenties, blijven beschikbaar.
Ja, de gebruiker kan op elk moment de beslissing wijzigen via Instellingen → Privacy → Tracking. De app kan de status niet programmatisch resetten — alleen via de systeeminstellingen.
Gebruik een pre-permission-scherm met uitleg van het voordeel, vraag om tracking niet bij de eerste start maar na het uitvoeren van een doelactie. Meta (2024) toonde een stijging van 35% in toestemming bij een uitgesteld verzoek.
Apps in de categorie “Voor kinderen” mogen geen IDFA en ATT gebruiken voor tracking volgens de Apple-regels. Ook is het hen verboden gegevens aan derden te verstrekken voor analyse of advertenties.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook