ATT iOS: cos’è, meccanismo di richiesta di tracciamento e IDFA

Autore: IT Sectr Pubblicato: 2026-05-20 Tempo di lettura: 10 min

App Tracking Transparency (ATT) è un meccanismo iOS che richiede il consenso esplicito dell’utente per accedere all’identificatore pubblicitario IDFA prima del tracciamento in app e siti web. Introdotto in iOS 14.5, ATT ha obbligato tutti gli sviluppatori a mostrare un dialogo di sistema che richiede l’autorizzazione al tracciamento. Secondo la Documentazione per Sviluppatori Apple, ogni app che utilizza IDFA per pubblicità mirata o attribuzione deve integrare il framework ATT e ottenere l’autorizzazione di accesso.

Punti chiave

  • ATT — App Tracking Transparency, framework per la richiesta di tracciamento in iOS 14.5+
  • IDFA — identificatore pubblicitario del dispositivo, accesso limitato senza consenso
  • Dialogo di sistema — popup standard con il testo dell’app che non può essere modificato
  • Autorizzazione al tracciamento — richiesta obbligatoria per mostrare annunci e attribuzione installazioni
  • Rifiuto — l’utente può revocare l’autorizzazione in Impostazioni in qualsiasi momento

Cos’è ATT (App Tracking Transparency)?

App Tracking Transparency è un framework di Apple per proteggere la privacy degli utenti, presentato in iOS 14.5. Richiede che le app ottengano l’autorizzazione esplicita per accedere all’identificatore pubblicitario del dispositivo (IDFA) prima di utilizzarlo per il tracciamento.

Prima di ATT, gli sviluppatori potevano leggere l’IDFA senza chiedere il permesso, consentendo alle reti pubblicitarie di creare profili utente e tracciare la loro attività tra app e siti web. Apple ha considerato questo una violazione della privacy e ha introdotto un dialogo di consenso obbligatorio.

Il framework è disponibile da iOS 14.0, ma è diventato obbligatorio per tutte le app che utilizzano IDFA con il rilascio di iOS 14.5 nell’aprile 2021. Secondo Flurry Analytics, dopo l’implementazione di ATT, meno del 25% degli utenti statunitensi ha acconsentito al tracciamento, cambiando radicalmente il mercato della pubblicità mobile.

ATT verifica l’autorizzazione tramite un dialogo di sistema speciale che l’app non può modificare o aggirare. L’utente vede un popup standard con il testo fornito dallo sviluppatore e sceglie tra “Consenti” o “Chiedi all’app di non tracciare”.

Come ATT si collega alla privacy in iOS

Apple posiziona ATT come parte della sua strategia complessiva sulla privacy, che include anche le Etichette nutrizionali sulla privacy nell’App Store e il Manifesto della privacy. Tutti e tre i meccanismi lavorano insieme: le etichette mostrano quali dati raccoglie l’app, il Manifesto dichiara le ragioni dell’uso delle API e ATT dà all’utente il controllo sul tracciamento.

Rifiutare il tracciamento non blocca il funzionamento dell’app stessa — gli utenti possono continuare a utilizzare tutte le funzionalità, ma le reti pubblicitarie non riceveranno l’IDFA per personalizzazione e attribuzione. Le alternative di Apple all’IDFA includono SKAdNetwork e l’attribuzione probabilistica.

Secondo Branch Metrics, dopo l’introduzione di ATT, la percentuale di app che ricevono IDFA è passata dal 70% al 20% a livello globale. Ciò ha portato a una revisione degli approcci all’attribuzione delle installazioni e alla monetizzazione pubblicitaria.

Modifiche in iOS 15 e 16

In iOS 15, Apple non ha inasprito i requisiti ATT ma ha aggiunto il Report sulla privacy delle app — un report che mostra all’utente la frequenza con cui le app accedono a sensori e dati. iOS 16 ha ampliato il controllo: l’utente può modificare le impostazioni di tracciamento in qualsiasi momento tramite Impostazioni → Privacy → Tracciamento.

Importante: se l’utente seleziona “Chiedi all’app di non tracciare” nel dialogo ATT, l’app non riceve il valore IDFA — invece, restituisce una stringa di zeri: 00000000-0000-0000-0000-000000000000. Tentare di leggere l’IDFA con altri mezzi o metodi alternativi porta al rifiuto dell’app nell’App Store.

A partire da iOS 17, Apple ha rafforzato i controlli: se un’app richiede IDFA senza mostrare il dialogo di sistema ATT, riceve un rifiuto a livello di sistema operativo, non solo un identificatore vuoto. Ciò elimina la possibilità di raccolta in background dell’IDFA all’insaputa dell’utente.

Come funziona la richiesta di tracciamento in iOS

Il processo di richiesta ATT consiste in tre fasi: verifica dello stato, visualizzazione del dialogo di sistema e elaborazione della risposta. Lo sviluppatore non può saltare nessun passaggio — il sistema operativo controlla ogni fase.

Verifica dello stato di autorizzazione

Prima di chiamare il dialogo, l’app deve verificare lo stato corrente tramite ATTrackingManager. Gli stati possibili sono: notDetermined (non ancora richiesto), restricted (vietato dalle policy del dispositivo), denied (utente rifiutato), authorized (consentito).

Se lo stato è già determinato (authorized o denied), il dialogo non può essere chiamato di nuovo — l’utente ha preso una decisione permanente. L’unico modo per cambiare decisione è attraverso le impostazioni di sistema iOS.

Per verificare lo stato si utilizza la proprietà ATTrackingManager.trackingAuthorizationStatus. La chiamata deve avvenire sul thread principale poiché il dialogo di sistema è un componente dell’interfaccia utente.

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

Visualizzazione del dialogo di sistema

Per mostrare il dialogo, si chiama il metodo requestTrackingAuthorization con una closure che riceve il risultato della scelta dell’utente. Importante: il dialogo viene mostrato una sola volta. Se lo sviluppatore tenta di chiamarlo di nuovo, il sistema ignora la richiesta.

Il testo del dialogo è composto da due parti: un’intestazione di sistema (che non può essere modificata) e un messaggio personalizzato che lo sviluppatore specifica in Info.plist tramite la chiave NSUserTrackingUsageDescription.

Il dialogo dovrebbe apparire in un contesto naturale — non immediatamente all’avvio dell’app, ma al primo tentativo di utilizzare funzionalità legate al tracciamento. Apple consiglia di mostrare il dialogo dopo che l’utente ha compreso il valore della funzionalità.

swift
func requestTrackingPermission() {
    ATTrackingManager.requestTrackingAuthorization { status in
        DispatchQueue.main.async {
            switch status {
            case .authorized:
                let idfa = ASIdentifierManager.shared().advertisingIdentifier
                print("IDFA: \(idfa)")
            case .denied:
                print("L’utente ha rifiutato il tracciamento")
            default:
                break
            }
        }
    }
}

IDFA e limitazione di accesso

IDFA (Identifier for Advertisers) è un identificatore pubblicitario unico per i dispositivi iOS, utilizzato per pubblicità mirata e attribuzione delle installazioni. Prima di ATT, gli sviluppatori lo ottenevano tramite ASIdentifierManager senza restrizioni. Dopo ATT, l’accesso a IDFA è bloccato fino a quando l’utente non dà il consenso esplicito.

Cos’è IDFA e a cosa serve

IDFA è una stringa UUID unica per ogni dispositivo iOS. Le reti pubblicitarie utilizzano IDFA per: tracciare le installazioni delle app (attribuzione), mostrare annunci pertinenti basati sugli interessi dell’utente, misurare l’efficacia delle campagne pubblicitarie e il retargeting — recuperare gli utenti che non hanno completato un’azione desiderata.

Dopo che l’utente rifiuta il tracciamento, ASIdentifierManager restituisce il valore 00000000-0000-0000-0000-000000000000. L’app può ancora leggere IDFA per scopi tecnici (come antifrode), ma non può trasmetterlo alle reti pubblicitarie.

Secondo Singular (2024), il tasso globale di consenso ATT è del 25–35%, con l’Europa (GDPR) che mostra tassi più alti (40–50%) rispetto agli Stati Uniti (15–25%). Ciò ha spinto le piattaforme pubblicitarie a sviluppare metodi di attribuzione alternativi.

Alternative a IDFA: SKAdNetwork e Attribuzione probabilistica

SKAdNetwork è un framework di Apple per l’attribuzione delle installazioni senza esporre IDFA. Funziona a livello di sistema operativo: la rete pubblicitaria invia un postback firmato, che Apple convalida e inoltra allo sviluppatore. L’attribuzione avviene senza identificare un utente specifico, solo a livello di campagna.

L’attribuzione probabilistica utilizza molteplici segnali del dispositivo — modello, versione iOS, fuso orario, luminosità dello schermo — per abbinare probabilisticamente le installazioni alle impressioni pubblicitarie. Tuttavia, Apple vieta questo metodo nelle sue linee guida e il suo utilizzo può portare al rifiuto dell’app.

Google, Adjust e AppsFlyer hanno sviluppato le proprie soluzioni ibride che combinano SKAdNetwork con dati aggregati proprietari. Ad esempio, Google Ads Conversion Tracking utilizza i postback SKAdNetwork e i propri modelli di machine learning per l’attribuzione senza IDFA.

Implementazione di ATT nel codice dell’app

Per integrare ATT, è necessario aggiungere la chiave NSUserTrackingUsageDescription in Info.plist e importare il framework AppTrackingTransparency. Di seguito sono riportati i passaggi per Swift e Objective-C.

Configurazione di Info.plist

Il primo passo è aggiungere la chiave NSUserTrackingUsageDescription in Info.plist con un testo che spiega perché l’app ha bisogno del tracciamento. Questo testo verrà visualizzato nel dialogo di sistema. Esempio: “Il tuo IDFA viene utilizzato per mostrare annunci personalizzati e monitorare l’efficacia delle campagne.”

Senza questa chiave, chiamare requestTrackingAuthorization causerà un crash dell’app — Apple verifica esplicitamente la presenza di NSUserTrackingUsageDescription prima di mostrare il dialogo. Il testo deve essere conciso, specifico e riflettere l’uso effettivo dei dati.

Importante: la chiave viene aggiunta manualmente tramite la scheda Info di Xcode o modificando il sorgente XML di Info.plist. Dopo l’aggiunta, ricostruisci il progetto e verifica che la chiave appaia nel binario finale.

xml
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>

Integrazione completa in Swift

In un progetto reale, è meglio chiamare la richiesta ATT prima del primo avvio di un modulo pubblicitario o tracker. Si consiglia di spiegare prima il valore del consenso su una schermata separata (prompt di pre-autorizzazione) — questo aumenta i tassi di consenso del 20–30%.

Un prompt di pre-autorizzazione è un’interfaccia utente personalizzata che mostra il vantaggio di attivare il tracciamento (“Aiutaci a mostrarti annunci pertinenti”). Solo dopo aver toccato “Continua” appare il dialogo di sistema ATT. Adjust (2024) ha registrato un aumento del 40% del consenso utilizzando una schermata di pre-autorizzazione.

swift
final class TrackingManager {
    static let shared = TrackingManager()

    func requestTrackingIfNeeded() {
        guard ATTrackingManager.trackingAuthorizationStatus
            == .notDetermined
        else { return }

        ATTrackingManager.requestTrackingAuthorization { _ in
            NotificationCenter.default.post(
                Notification(Name("trackingStatusChanged"))
            )
        }
    }
}

Errori nell’uso di ATT

Gli sviluppatori commettono spesso errori tipici durante l’integrazione di ATT, che portano a una minore conversione del consenso o al rifiuto dell’app da parte dei revisori dell’App Store. Esaminiamo i cinque problemi più comuni.

Richiedere ATT immediatamente dopo l’avvio dell’app

L’errore più comune è mostrare il dialogo di sistema ATT sulla prima schermata subito dopo il caricamento dell’app. L’utente non comprende ancora il valore dell’app e probabilmente preme “Rifiuta”. IronSource (2023) ha mostrato un calo del 32% del consenso quando richiesto sulla prima schermata rispetto alla richiesta dopo la terza sessione.

Raccomandazione: richiedi il tracciamento dopo che l’utente ha eseguito un’azione di valore (visualizzato contenuto, iniziato l’onboarding) o dopo 3–5 sessioni di utilizzo dell’app. Questo aumenta la fiducia e la percezione del valore.

Assenza di schermata di pre-autorizzazione

Mostrare il dialogo di sistema ATT senza spiegazione preliminare è un errore che riduce la conversione al 15–20%. L’utente vede una richiesta inaspettata e la rifiuta istintivamente. Una schermata di pre-autorizzazione che spiega il vantaggio aumenta il consenso al 35–45%.

Il testo di pre-autorizzazione deve essere specifico: “Permettici di mostrarti annunci pertinenti — questo ci aiuta a rimanere gratuiti.” Evita frasi vaghe — riducono la fiducia. GameAnalytics ha mostrato nel 2023 che una schermata di pre-autorizzazione che spiega il vantaggio genera il 28% in più di consensi rispetto a una schermata vuota.

Ignorare lo stato restricted e denied

Se l’utente ha già rifiutato il tracciamento o lo stato è restricted (controllo parentale, policy aziendali), l’app non deve chiamare di nuovo il dialogo ATT. Una chiamata ripetuta non funziona e viene percepita come una violazione della privacy. Invece, passa a SKAdNetwork e pubblicità contestuale.

Nello stato restricted, l’app non può determinare se l’opzione “Consenti richieste di tracciamento” è attivata nelle impostazioni. In questo caso, utilizza sempre SKAdNetwork come unico metodo di attribuzione e non mostrare una schermata di pre-autorizzazione.

Leggere IDFA senza chiamare ATT

Leggere IDFA tramite ASIdentifierManager.shared().advertisingIdentifier senza previa autorizzazione ATT restituisce una stringa di zeri. Alcuni sviluppatori tentano di utilizzare vecchi metodi di accesso a IDFA tramite API private — questo garantisce il rifiuto durante la revisione dell’app.

Apple utilizza l’analisi statica del codice e il machine learning per rilevare i bypass. Anche se l’app supera la revisione, gli aggiornamenti successivi o i controlli automatici potrebbero rivelare la violazione e portare al ban dell’account sviluppatore.

Testo errato di NSUserTrackingUsageDescription

Un testo troppo lungo, vago o fuorviante nella chiave NSUserTrackingUsageDescription è motivo di rifiuto da parte dei revisori. Apple verifica che la descrizione corrisponda all’uso effettivo dei dati. Se l’app non ha pubblicità ma indica “a scopo pubblicitario”, il revisore rifiuterà il build.

Formato consigliato: una descrizione specifica dello scopo dell’utilizzo di IDFA, di 2–3 frasi. Esempio per un’app senza pubblicità: “L’identificatore viene utilizzato per analisi e prevenzione delle frodi. I dati non vengono condivisi con terze parti e non vengono utilizzati per la profilazione.”

Domande frequenti

Cosa succede se ATT non viene aggiunto all’app?

Se un’app utilizza IDFA o tracciamento senza ATT, Apple la rifiuterà durante la revisione. Anche in assenza di tracciamento, si consiglia di aggiungere ATT per trasparenza — altrimenti, il rischio di rifiuto aumenta con ogni aggiornamento.

L’app funziona senza consenso al tracciamento?

Sì, l’app funziona perfettamente, ma le reti pubblicitarie non riceveranno l’IDFA per personalizzazione e attribuzione. Tutte le funzionalità dell’app, tranne gli annunci personalizzati, rimangono disponibili.

Si può reimpostare lo stato ATT in iOS?

Sì, l’utente può modificare la propria decisione in qualsiasi momento tramite Impostazioni → Privacy → Tracciamento. L’app non può reimpostare programmaticamente lo stato — solo tramite le impostazioni di sistema.

Come aumentare il tasso di consenso ATT?

Utilizza una schermata di pre-autorizzazione che spiega il vantaggio e richiedi il tracciamento non al primo avvio, ma dopo che l’utente ha eseguito un’azione di valore. Meta (2024) ha mostrato un aumento del 35% dei consensi con richieste ritardate.

ATT riguarda le app per bambini?

Le app nella categoria “Bambini” non possono utilizzare IDFA e ATT per il tracciamento secondo le regole di Apple. È inoltre vietato condividere dati con terze parti per analisi o pubblicità.

Riepilogo

  • ATT — App Tracking Transparency, framework obbligatorio per richiedere l’accesso a IDFA in iOS 14.5+
  • IDFA — identificatore pubblicitario del dispositivo, protetto da ATT da accessi non autorizzati
  • Dialogo di sistema — l’utente vede sempre un dialogo che l’app non può modificare o aggirare
  • Pre-autorizzazione — schermata personalizzata che spiega il vantaggio, aumenta il consenso del 20–40%
  • SKAdNetwork — l’unico metodo di attribuzione di Apple per le app senza accesso a IDFA
  • Conversione — il tasso globale di consenso è del 25–35%, in Europa fino al 50% grazie al GDPR
  • Integra ATT prima di chiamare qualsiasi tracker e assicurati di aggiungere la chiave NSUserTrackingUsageDescription in Info.plist

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche