Info
Beschrijving

[iOS] 4. Werken met ATT (App Tracking Transparency / iOS)

Werken met ATT (App Tracking Transparency) op iOS

Deze handleiding legt uit hoe u Apple's App-trackingtransparantie (ATT) Framework met onze CMP SDK. ATT is een vereiste op platformniveau (Apple), terwijl CMP de wettelijke/regulerende toestemming beheert. Beide moeten samenwerken om naleving en correct SDK-gedrag te garanderen.

De iOS App Tracking Transparency (ATT) prompt en toestemmingsbeheer onder AVG/ePrivacy verschillende doelen dienen en opereren werkenWij raden aan om te controleren of geen SDK wat dan ook is geladen vaardigheden ons ATT-dialoogvenster en voordien onze SDK. Gebaseerd op de keuzes die de gebruiker maakt op zowel het ATT-dialoogvenster en onze toestemmingslaag, de opgegeven SDK's wel of niet laden. 
Verduidelijken:
  • Het ATT-dialoogvenster en het toestemmingslaagadres (CMP) verschillende rechtsgrondslagen en reikwijdtes.

    • ATT is Apple's mechanisme om toestemming van de gebruiker te verkrijgen voor cross-app tracking (bijvoorbeeld het delen van identificatiegegevens zoals IDFA met derden voor reclamedoeleinden).

    • De toestemmingslaag (CMP) regeert cookie- en SDK-gebruik voor doeleinden zoals analyse, personalisatie, meting of essentiële app-functies — zoals vereist door AVG/ePrivacy en soortgelijke wettenAls voorbeelden kunnen we Firebase (GFA), Crashlytics, OneSignal, MixPanel, Sentry, enz. noemen. Geen van deze heeft direct betrekking op ATT, maar je moet toestemming verzamelen in ieder geval niet van de gebruiker. 

Zelfs als een gebruiker op systeemniveau op iOS “Vraag app om niet te volgen” selecteert, zal uw app kan nog steeds bepaalde soorten gegevens verwerken (bijvoorbeeld functionele cookies, SDK's voor metingen of andere technische hulpmiddelen) die een wettelijke basis of toestemming nodig hebben op grond van de privacywetgevingDaarom moet de toestemmingslaag nog steeds worden weergegeven, zodat de gebruiker zijn of haar keuze met betrekking tot deze technologieën kan uitoefenen. Zorg ervoor dat dit niet het geval is, aangezien Als u besluit de toestemmingslaag niet weer te geven, maar toch een SDK laadt die gegevens naar servers van het apparaat verwerkt, zelfs met verschillende doeleinden/leveranciers, wordt uw app geblokkeerd.

Stap 1: Vereisten

  • Minimale iOS-versie: iOS 14 (ATT niet beschikbaar op eerdere versies)

  • Voeg de AppTrackingTransparantie.framework aan uw project

  • In uw Info.plist, voeg toe:

<key>NSUserTrackingUsageDescription</key> 
<string>This identifier will be used to deliver personalized ads and improve user experience.</string>
  • De string moet duidelijk uitleggen waarom u tracking aanvraagt

Apple kan vage formuleringen afwijzen.

Alle ATT-verwerking moet worden beheerd via de mobiele app zelf en niet via onze SDK, omdat onze SDK geen kennis heeft van de levenscyclus van de mobiele app die deze integreert. ATT-verzoek moet worden weergegeven en volledig worden afgehandeld vaardigheden onze SDKen het ATT-dialoogvenster mag niet tegelijkertijd met of boven op onze toestemmingslaag worden geladen. Zorg ervoor dat u onze toestemmingslaag alleen laadt via checkAndOpen() or forceOpen() methoden na het verwerken van de ATT-aanvraag en ervoor zorgen dat de keuze van de gebruiker met betrekking tot ATT reeds op het apparaat is bijgewerkt. Niet laad onze toestemmingslaag vaardigheden dat. 

Stap 2: Controleer ATT-status

Controleer de huidige ATT-autorisatiestatus voordat u tracking-SDK's initialiseert:

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
    }
}

 

Stap 3: ATT-autorisatie aanvragen

Als de status is .notDetermined, autorisatie aanvragen wanneer de app actief is:

if #available(iOS 14, *) {
    ATTrackingManager.requestTrackingAuthorization { status in
        DispatchQueue.main.async {
            self.didReceiveATTStatus(status)
        }
    }
} else {
    // iOS < 14: proceed to CMP directly
    openCMP()
}

Stap 4: ATT-resultaat verwerken

Definieer hoe het ATT-resultaat moet worden verwerkt en start vervolgens CMP:

func didReceiveATTStatus(_ status: ATTrackingManager.AuthorizationStatus) {
    switch status {
    case .authorized:
        openCMP()
    case .denied, .restricted:
        rejectAdPurposesAndVendors {
            self.openCMP()
        }
    case .notDetermined:
        openCMP()
    @unknown default:
        openCMP()
    }
}

 

Stap 5: CMP starten

Nadat ATT is opgelost, bepaalt u de ATT-status in de CMP-gebruikersinterface. U kunt de CMP-gebruikersinterface openen om wettelijke/regulerende toestemming te verzamelen met behulp van een gericht ontwerp:

private func openCMP() {
    CMPManager.shared.settATTStatus =   // insert here the ATT status retrieved 
      									//from ATTManager.AuthorizationStatus
    CMPManager.shared.checkAndOpen()
}

 

Stap 6: Beslissingstabel — ATT × CMP-gedrag × SDK-acties

ATT-status IDFA CMP-gedrag SDK-acties
.notDetermined Nee Wacht op de ATT-prompt en start vervolgens CMP. Initialiseer de trackers nog niet.
.authorized Ja Verzamel gedetailleerde CMP-toestemming. Schakel advertenties/analyses alleen in als CMP dit toestaat.
.denied Nee Beschouw reclame/profilering als afgewezen. Advertentiedoeleinden/leveranciers programmatisch afwijzen en vervolgens CMP weergeven voor niet-trackingdoeleinden.
.restricted Nee Hetzelfde als geweigerd. Advertentiedoeleinden/leveranciers afwijzen en vervolgens CMP openen.
iOS < 14 NB Sla ATT over, gebruik alleen CMP. Blokkeren totdat CMP is opgelost.

Stap 7: ATT-bewuste API-recepten

Advertentiedoeleinden/leveranciers afwijzen wanneer ATT is geweigerd of beperkt

func rejectAdPurposesAndVendors(completion: @escaping () -> Void) {        
     let adPurposeIds = ["c52", "c53"]        // Example purposes        
     CMPManager.shared.rejectPurposes(adPurposeIds, updateVendor: true)  
}

(OF) Advertentiedoeleinden/leveranciers vóór de toekenning wanneer ATT dit heeft geautoriseerd

func pregrantAdPurposesAndVendorsThenOpenCMP() {
    let adPurposeIds = ["c52", "c53"]
    CMPManager.shared.acceptPurposes(adPurposeIds, updatePurpose: true)
}

 

Stap 8: Controleer opnieuw op App Resume

ATT kan worden gewijzigd in de instellingen. Controleer dit altijd opnieuw bij het hervatten:

Stap 9: Randgevallen en terugvalopties

  • Beperkt: ATT niet beschikbaar (bijv. ouderlijk toezicht). Tracking blokkeren.

  • iOS < 14: Geen ATT → gebruik alleen CMP.

  • Prompt niet beschikbaar: ATT moet worden aangevraagd wanneer de app actief is.

  • Gebruikersweigering: Behandel advertentiedoeleinden/leveranciers als afgewezen.

Stap 10: Testen en debuggen

  • Gebruik een verse installatie om de ATT-prompt te activeren.

  • Test alle toestanden: .authorized, .denied, .restricted, .notDetermined.

  • Schakel ATT in Simulator/Fysiek apparaat in onder Instellingen → Privacy en beveiliging → Tracking.

  • Logboekuitvoer om te bevestigen dat CMP pas wordt gestart nadat ATT is opgelost.

Stap 11: Beste praktijken

  • Initialiseer trackers nooit voordat de ATT + CMP-stroom is voltooid.
  • Maak verstandig gebruik van pre-prompts; misleid gebruikers nooit, want dit kan tot blokkering leiden.
  • Laat de CMP UI niet overlappen met de ATT-prompt.
  • Geef gebruikers de mogelijkheid om CMP op elk gewenst moment opnieuw te openen.
  • Houd er rekening mee dat Apple Review uw gegevens afwijst als tracking plaatsvindt voordat ATT toestemming heeft gegeven.

Stap 12: Checklist voor ontwikkelaars

  • Toevoegen AppTrackingTransparency.framework.

  • Toevoegen NSUserTrackingUsageDescription naar Info.plist.

  • Controleer ATT-status bij het opstarten.

  • Optioneel pre-prompt weergeven.

  • Vraag ATT aan als .notDetermined.

  • ATT-resultaten verwerken (leveranciers/doeleinden accepteren/afwijzen).

  • Start CMP nadat ATT voltooid is.

  • Initialiseer/blokkeer SDK's pas nadat CMP is opgelost.

  • Controleer ATT opnieuw bij het hervatten van de app.

  • Bied een CMP-heropeningsoptie.

  • Test alle stromen.


Referenties

Terug naar boven