Az App Tracking Transparency (ATT) egy iOS-mechanizmus, amely kifejezett felhasználói hozzájárulást követel az IDFA reklámazonosító eléréséhez a nyomonkövetés előtt az alkalmazásokban és weboldalakon. Az iOS 14.5-ben bevezetett ATT minden fejlesztőt kötelezett a rendszerpárbeszédablak megjelenítésére a nyomonkövetési engedély kérésével. Az Apple Developer Documentation szerint minden alkalmazásnak, amely IDFA-t használ célzott reklámozáshoz vagy attribúcióhoz, integrálnia kell az ATT keretrendszert és el kell nyernie a hozzáférési engedélyt.
Főbb pontok
Az App Tracking Transparency az Apple keretrendszere a felhasználók adatvédelmének védelmére, amelyet az iOS 14.5-ben vezettek be. Előírja az alkalmazások számára, hogy kifejezett engedélyt szerezzenek az eszköz reklámazonosítójának (IDFA) eléréséhez, mielőtt azt nyomonkövetésre használnák.
Az ATT megjelenése előtt a fejlesztők engedély nélkül olvashatták az IDFA-t, lehetővé téve a hirdetési hálózatok számára, hogy felhasználói profilokat építsenek és kövessék tevékenységüket az alkalmazások és weboldalak között. Az Apple az adatvédelem megsértésének nevezte ezt a megközelítést, és bevezette a kötelező hozzájárulási párbeszédablakot.
A keretrendszer iOS 14.0-tól elérhető, de kötelezővé az IDFA-t használó összes alkalmazás számára az iOS 14.5 2021 áprilisi kiadásával vált. A Flurry Analytics szerint az ATT bevezetése után az amerikai felhasználók kevesebb mint 25%-a adott hozzájárulást a nyomonkövetéshez, ami gyökeresen megváltoztatta a mobilhirdetési piacot.
Az ATT egy speciális rendszerpárbeszédablakon keresztül ellenőrzi az engedély meglétét, amelyet az alkalmazás nem módosíthat vagy kerülhet meg. A felhasználó egy szabványos felugró ablakot lát a fejlesztő által megadott szöveggel, és választ az “Engedélyezés” vagy “Alkalmazás kérelme a nyomonkövetés mellőzésére” lehetőségek között.
Az Apple az ATT-t az általános adatvédelmi stratégia részeként pozícionálja, amely magában foglalja a Privacy Nutrition Label-t az App Store-ban és a Privacy Manifest-et is. Mindhárom mechanizmus együtt működik: a címkék megmutatják, milyen adatokat gyűjt az alkalmazás, a Manifest deklarálja az API-használat okait, az ATT pedig ellenőrzést ad a felhasználónak a nyomonkövetés felett.
A nyomonkövetés elutasítása nem blokkolja magának az alkalmazásnak a működését — a felhasználó továbbra is használhatja az összes funkciót, de a hirdetési hálózatok nem kapják meg az IDFA-t személyre szabáshoz és attribúcióhoz. Az IDFA alternatívái az Apple SKAdNetwork és Probabilistic Attribution rendszerei lettek.
A Branch Metrics szerint az ATT bevezetése után az IDFA-t kapó alkalmazások aránya globálisan 70%-ról 20%-ra csökkent. Ez a telepítési attribúció és a hirdetéseken keresztüli monetizálás megközelítéseinek újragondolásához vezetett.
Az iOS 15-ben az Apple nem szigorította az ATT követelményeit, de hozzáadta az App Privacy Report-ot — egy jelentést, amely megmutatja a felhasználónak, hogy az alkalmazások milyen gyakran férnek hozzá az érzékelőkhöz és adatokhoz. Az iOS 16 kiterjesztette az irányítást: a felhasználó bármikor módosíthatja a nyomonkövetési beállításokat a Beállítások → Adatvédelem → Nyomonkövetés menüpontban.
Fontos: ha a felhasználó az “Alkalmazás kérelme a nyomonkövetés mellőzésére” lehetőséget választja az ATT párbeszédablakban, az alkalmazás nem kapja meg az IDFA értékét, hanem nulla karakterekből álló sztringet kap — 00000000-0000-0000-0000-000000000000. Az IDFA más módon vagy kerülőutakon történő olvasásának kísérlete az alkalmazás App Store-ból való elutasításához vezet.
iOS 17-től kezdve az Apple fokozta az ellenőrzéseket: ha egy alkalmazás az ATT rendszerpárbeszédablak megjelenítése nélkül kéri az IDFA-t, az OS szinten kap elutasítást, nem csak üres azonosítót. Ez kizárja az IDFA háttérben történő gyűjtésének lehetőségét a felhasználó tudta nélkül.
Az ATT kérési folyamat három szakaszból áll: állapotellenőrzés, rendszerpárbeszédablak megjelenítése és válasz feldolgozása. A fejlesztő nem hagyhat ki egyetlen lépést sem — az operációs rendszer minden szakaszt ellenőriz.
A párbeszédablak meghívása előtt az alkalmazásnak ellenőriznie kell az aktuális állapotot az ATTrackingManager segítségével. A lehetséges állapotok: notDetermined (még nem kérték), restricted (az eszköz irányelvei által tiltott), denied (a felhasználó elutasította), authorized (engedélyezett).
Ha az állapot már meghatározott (authorized vagy denied), a párbeszédablak újbóli meghívása nem lehetséges — a felhasználó végleges döntést hozott. A döntés megváltoztatásának egyetlen módja az iOS rendszerbeállításain keresztül történik.
Az állapot ellenőrzéséhez az ATTrackingManager.trackingAuthorizationStatus tulajdonságot használjuk. A hívásnak a fő szálon kell történnie, mivel a rendszerpárbeszédablak UI-komponens.
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
}
}
A párbeszédablak megjelenítéséhez a requestTrackingAuthorization metódust hívjuk meg egy lezárással, amely megkapja a felhasználó választásának eredményét. Fontos: a párbeszédablak csak egyszer jelenik meg. Ha a fejlesztő megpróbálja újból meghívni, a rendszer figyelmen kívül hagyja a kérést.
A párbeszédablak szövege két részből áll: a rendszer címe (amely nem változtatható) és egy egyedi üzenet, amelyet a fejlesztő az Info.plist-ben ad meg a NSUserTrackingUsageDescription kulcson keresztül.
A párbeszédablaknak természetes kontextusban kell megjelennie — nem az alkalmazás indításakor azonnal, hanem a nyomonkövetéssel kapcsolatos funkció első használatakor. Az Apple azt ajánlja, hogy a párbeszédablakot azután jelenítsük meg, miután a felhasználó megértette a funkció értékét.
func requestTrackingPermission() {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
switch status {
case .authorized:
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa)")
case .denied:
print("A felhasználó megtagadta a nyomonkövetést")
default:
break
}
}
}
}
Az IDFA (Identifier for Advertisers) az iOS-eszköz egyedi reklámazonosítója, amelyet célzott hirdetésekhez és telepítési attribúcióhoz használnak. Az ATT előtt a fejlesztők az ASIdentifierManager-en keresztül korlátozások nélkül jutottak hozzá. Az ATT bevezetése után az IDFA-hoz való hozzáférés blokkolva van, amíg a felhasználó kifejezett hozzájárulást nem ad.
Az IDFA egy UUID sztring, amely minden iOS-eszközre egyedi. A hirdetési hálózatok az IDFA-t használják: alkalmazástelepítések nyomonkövetésére (attribúció), releváns hirdetések megjelenítésére a felhasználói érdeklődés alapján, hirdetési kampányok hatékonyságának mérésére és retargetingre — azon felhasználók visszacsábítására, akik nem fejeztek be egy célzott műveletet.
Miután a felhasználó elutasította a nyomonkövetést, az ASIdentifierManager a 00000000-0000-0000-0000-000000000000 értéket adja vissza. Az alkalmazás továbbra is olvashatja az IDFA-t technikai célokra (például csalás elleni védelem), de nem továbbíthatja azt hirdetési hálózatoknak.
A Singular (2024) szerint a globális ATT hozzájárulási arány 25-35%, Európában (GDPR) magasabb (40-50%), mint az USA-ban (15-25%). Ez arra kényszerítette a hirdetési platformokat, hogy alternatív attribúciós módszereket fejlesszenek.
Az SKAdNetwork az Apple keretrendszere a telepítési attribúcióhoz az IDFA felfedése nélkül. OS szinten működik: a hirdetési hálózat egy aláírt postbacket küld, amelyet az Apple ellenőriz és továbbít a fejlesztőnek. Az attribúció az adott felhasználó azonosítása nélkül, csak kampányszinten történik.
A Probabilistic Attribution az eszköz számos jelét — modell, iOS-verzió, időzóna, képernyő fényereje — használja a telepítések és a hirdetési megjelenések valószínűségi alapon történő párosításához. Az Apple azonban tiltja ezt a módszert a szabályaiban, és használata az alkalmazás elutasításához vezethet.
A Google, az Adjust és az AppsFlyer saját hibrid megoldásokat fejlesztettek ki, amelyek kombinálják az SKAdNetwork-et saját összesített adataikkal. Például a Google Ads Conversion Tracking SKAdNetwork postbackeket és saját gépi tanulási modelleket használ az attribúcióhoz IDFA nélkül.
Az ATT integrálásához hozzá kell adni a NSUserTrackingUsageDescription kulcsot az Info.plist-hez, és importálni kell az AppTrackingTransparency keretrendszert. Az alábbiakban a Swift és Objective-C lépései találhatók.
Az első lépés — a NSUserTrackingUsageDescription kulcs hozzáadása az Info.plist-hez egy szöveggel, amely elmagyarázza, miért van szüksége az alkalmazásnak a nyomonkövetésre. Ez a szöveg jelenik meg a rendszerpárbeszédablakban. Példa: “Az Ön IDFA-ja személyre szabott hirdetések megjelenítéséhez és a kampányok hatékonyságának nyomonkövetéséhez használatos”.
E kulcs nélkül a requestTrackingAuthorization hívása az alkalmazás összeomlását okozza — az Apple kifejezetten ellenőrzi a NSUserTrackingUsageDescription meglétét a párbeszédablak megjelenítése előtt. A szövegnek rövidnek, konkrétnak és a tényleges adathasználatnak megfelelőnek kell lennie.
Fontos: a kulcs manuálisan kerül hozzáadásra az Xcode Info fülön keresztül vagy az Info.plist XML forrásának szerkesztésével. Hozzáadás után építse újra a projektet, és ellenőrizze, hogy a kulcs megjelenik-e a végleges binárisban.
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>
Egy valódi projektben az ATT kérést célszerű a reklámmodul vagy tracker első indítása előtt meghívni. Ajánlott előzetesen elmagyarázni a felhasználónak a hozzájárulás értékét egy külön képernyőn (pre-permission prompt) — ez 20-30%-kal növeli a hozzájárulások arányát.
A pre-permission prompt egy saját UI, amely megmutatja a nyomonkövetés bekapcsolásának előnyét (“Segítsen nekünk releváns hirdetéseket megjeleníteni”). Csak a “Folytatás” gomb megnyomása után hívódik meg az ATT rendszerpárbeszédablak. Az Adjust (2024) 40%-os növekedést regisztrált a hozzájárulásban pre-permission képernyő használatakor.
final class TrackingManager {
static let shared = TrackingManager()
func requestTrackingIfNeeded() {
guard ATTrackingManager.trackingAuthorizationStatus
== .notDetermined
else { return }
ATTrackingManager.requestTrackingAuthorization { _ in
NotificationCenter.default.post(
Notification(Name("trackingStatusChanged"))
)
}
}
}
A fejlesztők gyakran követnek el tipikus hibákat az ATT integrálásakor, amelyek a hozzájárulási konverzió csökkenéséhez vagy az alkalmazás App Store moderátorok általi elutasításához vezetnek. Vizsgáljuk meg az öt leggyakoribb problémát.
A leggyakoribb hiba — az ATT rendszerpárbeszédablak megjelenítése az alkalmazás betöltése utáni első képernyőn. A felhasználó még nem érti az alkalmazás értékét, és nagy valószínűséggel az “Elutasítás” gombot nyomja meg. Az IronSource (2023) 32%-os csökkenést mutatott a hozzájárulásban az első képernyős kérés esetén a harmadik munkamenet utáni kéréshez képest.
Javaslat: kérjen nyomonkövetést azután, hogy a felhasználó végrehajtott egy célzott műveletet (megtekintette a tartalmat, elkezdte a bevezetést) vagy 3-5 alkalmazáshasználati munkamenet után. Ez növeli a bizalmat és az érték tudatosulását.
Az ATT rendszerpárbeszédablak megjelenítése előzetes magyarázat nélkül — olyan hiba, amely 15-20%-ra csökkenti a konverziót. A felhasználó váratlan kérést lát, és ösztönösen elutasítja. A pre-permission képernyő az előny magyarázatával 35-45%-ra növeli a hozzájárulást.
A pre-permission szövegének konkrétnak kell lennie: “Engedélyezze a releváns hirdetések megjelenítését — segít nekünk ingyenesnek maradni”. Kerülje az általános kifejezéseket — ezek csökkentik a bizalmat. A GameAnalytics 2023-ban kimutatta, hogy a pre-permission az előny magyarázatával 28%-kal több hozzájárulást eredményez, mint egy üres képernyő.
Ha a felhasználó már elutasította a nyomonkövetést, vagy az állapot restricted (szülői felügyelet, vállalati irányelvek), az alkalmazás nem hívhatja meg újra az ATT párbeszédablakot. Az újbóli hívás nem működik, és az adatvédelem megsértéseként érzékelhető. Ehelyett váltson SKAdNetwork-re és kontextuális hirdetésekre.
Restricted állapotban az alkalmazás nem tudja meghatározni, hogy a “Nyomonkövetési kérelmek engedélyezése” opció be van-e kapcsolva a beállításokban. Ebben az esetben mindig használjon alternatíva nélküli attribúciót SKAdNetworkön keresztül, és ne jelenítsen meg pre-permission képernyőt.
Az IDFA olvasása az ASIdentifierManager.shared().advertisingIdentifier segítségével előzetes ATT engedély nélkül nullákból álló sztringet ad vissza. Egyes fejlesztők megpróbálják az IDFA elérésének régi módszereit használni privát API-okon keresztül — ez garantáltan az alkalmazás elutasításához vezet a felülvizsgálat során.
Az Apple statikus kódelemzőt és gépi tanulást használ a kerülőutak észlelésére. Még ha az alkalmazás át is megy a felülvizsgálaton, a későbbi frissítések vagy automatikus ellenőrzések feltárhatják a jogsértést, és a fejlesztői fiók letiltásához vezethetnek.
Túl hosszú, homályos vagy félrevezető szöveg a NSUserTrackingUsageDescription kulcsban — az alkalmazás moderátorok általi elutasításának oka. Az Apple ellenőrzi, hogy a leírás megfelel-e a tényleges adathasználatnak. Ha az alkalmazás nem tartalmaz hirdetéseket, de “reklámcélokra” hivatkozik, a moderátor elutasítja a buildet.
Ajánlott formátum: az IDFA használati céljának konkrét leírása 2-3 mondatban. Példa hirdetések nélküli alkalmazáshoz: “Az azonosító elemzési és csalásmegelőzési célokra szolgál. Az adatokat nem adjuk át harmadik félnek, és nem használjuk profilalkotásra”.
Gyakran Ismételt Kérdések
Ha az alkalmazás IDFA-t vagy nyomonkövetést használ ATT nélkül, az Apple elutasítja azt a felülvizsgálati folyamat során. Még nyomonkövetés hiányában is ajánlott hozzáadni az ATT-t az átláthatóság érdekében, ellenkező esetben a következő frissítésnél nő az elutasítás kockázata.
Igen, az alkalmazás teljes mértékben működik, de a hirdetési hálózatok nem kapják meg az IDFA-t személyre szabáshoz és attribúcióhoz. Az alkalmazás összes funkciója, a személyre szabott hirdetések kivételével, elérhető marad.
Igen, a felhasználó bármikor módosíthatja döntését a Beállítások → Adatvédelem → Nyomonkövetés menüpontban. Az alkalmazás nem tudja programozottan visszaállítani az állapotot — csak a rendszerbeállításokon keresztül.
Használjon pre-permission képernyőt az előny magyarázatával, kérjen nyomonkövetést ne az első indításkor, hanem egy célzott művelet elvégzése után. A Meta (2024) 35%-os növekedést mutatott a hozzájárulásban késleltetett kérés esetén.
A “Gyermekeknek” kategóriájú alkalmazások az Apple szabályai szerint nem használhatják az IDFA-t és az ATT-t nyomonkövetésre. Továbbá tilos adatokat továbbítaniuk harmadik félnek elemzési vagy hirdetési célokra.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is