[iOS] 4. Arbeta med ATT (App Tracking Transparency / iOS)
Arbeta med ATT (App Tracking Transparency) på iOS
ATT och samtyckeshantering är separata system att du måste koordinera manuellt.
Den här guiden förklarar hur man korrekt integrerar Apples App Tracking Transparency (ATT) ramverk med vårt CMP SDK. ATT är ett krav på plattformsnivå (Apple) medan CMP hanterar juridiskt/regulatoriskt samtycke. Båda måste samarbeta för att säkerställa efterlevnad och korrekt SDK-beteende.
-
ATT-dialogrutan och adressen för samtyckeslagret (CMP) olika rättsliga grunder och tillämpningsområden.
-
ATT är Apples mekanism för att få användarbehörighet för spårning över flera appar (dvs. delning av identifierare som IDFA med tredje part i reklamsyfte).
-
Ocuco-landskapet samtyckeslager (CMP) styr cookie- och SDK-användning för ändamål som analys, personalisering, mätning eller viktiga appfunktioner — enligt kraven i GDPR/ePrivacy och liknande lagarSom exempel kan vi nämna Firebase (GFA), Crashlytics, OneSignal, MixPanel, Sentry, etc. Inget av dessa är direkt relaterat till ATT, men du behöver samla in samtycke från användaren i alla fall.
-
Även om en användare väljer "Be appen att inte spåra" på systemnivå i iOS, kommer din app kan fortfarande behandla vissa typer av uppgifter (till exempel funktionella cookies, SDK:er för mätning eller andra tekniska verktyg) som kräver en laglig grund eller samtycke enligt integritetslagarDärför måste samtyckeslagret fortfarande visas, så att användaren kan göra sina val gällande dessa tekniker. Se till att detta inte är fallet i ditt fall, eftersom Om du väljer att hålla samtyckeslagret borta från att visas men ändå laddar SDK som hanterar data till servrar från enheten även med olika syften/leverantörer, kommer din app att blockeras..
Steg 1: Förutsättningar
-
Lägsta iOS-version: iOS 14 (ATT är inte tillgängligt på tidigare versioner)
-
Lägg till AppTrackingTransparency.framework till ditt projekt
-
I din Info.plist, Lägg till:
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads and improve user experience.</string>
-
Strängen måste tydligt förklara varför du begär spårning
Apple kan avvisa vaga formuleringar.
All ATT-hantering måste hanteras i själva mobilappen, och inte via vårt SDK, eftersom vårt SDK inte är medvetet om livscykeln för den mobilapp som integrerar den. ATT-begäran måste visas och hanteras fullständigt innan vårt SDK, och ATT-dialogrutan bör inte läsas in samtidigt som eller ovanpå vårt samtyckeslager. Se till att du bara laddar vårt samtyckeslager via checkAndOpen() or forceOpen() metoder efter hantera ATT-begäran och se till att användarens val angående ATT redan var uppdaterat på enheten. Gör inte ladda vårt samtyckeslager innan den där.
Steg 2: Kontrollera ATT-status
Kontrollera den aktuella ATT-auktoriseringsstatusen innan du initierar spårnings-SDK:er:
import AppTrackingTransparency
import AdSupport
if #available(iOS 14, *) {
let status = ATTrackingManager.trackingAuthorizationStatus
switch status {
case .authorized:
// IDFA available
case .denied, .restricted:
// IDFA blocked
case .notDetermined:
// Prompt will be shown later
@unknown default:
break
}
}
Steg 3: Begär ATT-auktorisering
Om status är .notDetermined, begär auktorisering när appen är aktiv:
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
self.didReceiveATTStatus(status)
}
}
} else {
// iOS < 14: proceed to CMP directly
openCMP()
}
Steg 4: Hantera ATT-resultat
Definiera hur ATT-resultatet ska bearbetas och sedan startas CMP:
func didReceiveATTStatus(_ status: ATTrackingManager.AuthorizationStatus) {
switch status {
case .authorized:
openCMP()
case .denied, .restricted:
rejectAdPurposesAndVendors {
self.openCMP()
}
case .notDetermined:
openCMP()
@unknown default:
openCMP()
}
}
Steg 5: Starta CMP
Efter att ATT har lösts, fastställ ATT-statusen för CMP-gränssnittet, kan du öppna CMP-gränssnittet för att inhämta juridiskt/regulatoriskt samtycke med hjälp av en riktad design:
private func openCMP() {
CMPManager.shared.settATTStatus = // insert here the ATT status retrieved
//from ATTManager.AuthorizationStatus
CMPManager.shared.checkAndOpen()
}
Steg 6: Beslutstabell — ATT × CMP-beteende × SDK-åtgärder
| ATT-status | IDFA | CMP-beteende | SDK-åtgärder |
|---|---|---|---|
.notDetermined |
Nej | Vänta på ATT-prompten och starta sedan CMP. | Initiera inte spårare än. |
.authorized |
Ja | Samla in detaljerat CMP-samtycke. | Aktivera endast annonser/analys om CMP tillåter det. |
.denied |
Nej | Behandla annonsering/profilering som avvisad. | Avvisa annonsändamål/leverantörer programmatiskt och visa sedan CMP för icke-spårningsändamål. |
.restricted |
Nej | Samma som Nekad. | Avvisa annonsändamål/leverantörer och öppna sedan CMP. |
| iOS < 14 | Ja | Hoppa över ATT, använd endast CMP. | Blockera tills CMP löses. |
Steg 7: ATT-Aware API-recept
Avvisa annonsändamål/leverantörer när ATT nekas eller begränsas
func rejectAdPurposesAndVendors(completion: @escaping () -> Void) {
let adPurposeIds = ["c52", "c53"] // Example purposes
CMPManager.shared.rejectPurposes(adPurposeIds, updateVendor: true)
}
(ELLER) Förhandsbevilja annonsändamål/leverantörer när ATT godkänt
func pregrantAdPurposesAndVendorsThenOpenCMP() {
let adPurposeIds = ["c52", "c53"]
CMPManager.shared.acceptPurposes(adPurposeIds, updatePurpose: true)
}
Steg 8: Kontrollera appens CV igen
ATT kan ändras i Inställningar. Kontrollera alltid CV:t igen:
Steg 9: Kantfall och reservlösningar
Steg 10: Testning och felsökning
-
Använd ny installation för att utlösa ATT-prompten.
-
Testa alla tillstånd:
.authorized,.denied,.restricted,.notDetermined. -
Växla ATT i Simulator/Fysisk enhet under Inställningar → Sekretess och säkerhet → Spårning.
-
Logga utdata för att bekräfta CMP-starter endast efter att ATT har lösts.
Steg 11: Bästa praxis
- Initiera aldrig spårare innan ATT + CMP-flödet är klart.
- Använd förhandsmeddelanden klokt; vilseleda aldrig användare eftersom det kan leda till blockering.
- Överlappa inte CMP-gränssnittet med ATT-prompten.
- Tillåt användare att öppna CMP igen när som helst.
- Förvänta dig avslag från Apple Review om spårning sker före ATT-tillstånd.
Steg 12: Checklista för utvecklare
-
Lägg till
AppTrackingTransparency.framework. -
Lägg till
NSUserTrackingUsageDescriptiontill Info.plist. -
Kontrollera ATT-status vid uppstart.
-
Visa valfritt förfrågan.
-
Begär ATT om
.notDetermined. -
Hantera ATT-resultat (acceptera/avvisa leverantörer/ändamål i enlighet därmed).
-
Starta CMP efter att ATT är klar.
-
Initiera/blockera SDK:er endast efter att CMP har lösts.
-
Kontrollera ATT på appens CV igen.
-
Erbjud möjlighet att öppna CMP igen.
-
Testa alla flöden.







