Guide d'optimisation ATT Apple : Comment améliorer les taux d'acceptation de l'ATT

opoinstall
2026-08-20
5 min read

Comment optimiser les taux d'acceptation de la transparence du suivi des applications (ATT) ? Améliorer l'expérience de demande d'autorisation ATT implique de fournir un contexte clair en amont, de rédiger un texte NSUserTrackingUsageDescription précis et de choisir un moment pertinent dans le parcours utilisateur pour présenter la demande d'autorisation du système. L'effet sur le taux d'autorisation doit être mesuré de manière empirique.

L'identifiant pour les annonceurs (IDFA) est un identifiant d'appareil réinitialisable fourni par Apple et utilisé pour l'attribution publicitaire et la mesure sur iOS. Dans le cadre du framework App Tracking Transparency (ATT), les applications ne peuvent accéder à l'IDFA qu'après avoir reçu l'autorisation explicite de l'utilisateur via l'invite d'autorisation ATTrackingManager.

Terme Définition
IDFA Identifiant publicitaire au niveau de la plateforme d'Apple régi par la transparence du suivi des applications (ATT).
App Tracking Transparency (ATT) Framework d'Apple exigeant l'autorisation de l'utilisateur avant de suivre ses activités à travers les applications et les sites web.
ATTrackingManager L'API native AppTrackingTransparency utilisée pour demander l'autorisation de suivi.
Amorce de pré-autorisation (Pre-Permission Primer) Un écran personnalisé intégré à l'application présenté avant l'invite système pour expliquer pourquoi l'autorisation est demandée.

L'économie de l'accès à l'IDFA et de l'optimisation du consentement ATT

Le rôle de l'accès autorisé à l'IDFA dans la mesure iOS moderne

L'accès autorisé à l'IDFA peut prendre en charge les flux de travail d'attribution et de mesure publicitaire au niveau de l'utilisateur lorsque l'utilisation des données de suivi par une application est conforme à l'ATT et aux exigences de ses partenaires publicitaires et de mesure. Lorsque l'autorisation de suivi n'est pas disponible, les équipes qui ont toujours besoin d'une mesure publicitaire peuvent utiliser des approches indépendantes médiées par la plateforme telles que AdAttributionKit ou les intégrations SKAdNetwork existantes.

Lorsqu'il est autorisé, l'IDFA fournit une clé de jointure déterministe pour les intégrations de réseaux publicitaires prises en charge, permettant le rapprochement des conversions au niveau des campagnes sans modélisation statistique. Lorsque l'autorisation est refusée, les applications basculent la mesure vers les frameworks natifs de la plateforme.

Le problème des invites immédiates au lancement à froid

Demander aux utilisateurs l'autorisation de suivi immédiatement lors d'un lancement à froid est techniquement autorisé par Apple, mais cela peut fournir moins de contexte pour une décision d'autorisation éclairée, car l'utilisateur n'a pas encore expérimenté les fonctionnalités de l'application :

  • Absence de confiance dans le produit : Les nouveaux utilisateurs n'ont pas encore développé confiance dans les fonctionnalités de l'application, la valeur de la marque ou les pratiques de sécurité des données.
  • Contexte peu clair : La boîte de dialogue système native apparaît sans explication préalable, ce qui pousse les utilisateurs prudents à opter par défaut pour « Demander à l'app de ne pas suivre ».
  • Fatigue des autorisations : Empiler plusieurs boîtes de dialogue d'autorisation du système (telles que les notifications push, l'ATT et la localisation) lors du lancement initial de l'application crée des frictions et augmente l'abandon lors de l'intégration (onboarding). La documentation de l'API Apple indique que si une alerte d'autorisation existante est déjà en attente, les demandes d'autorisation ultérieures n'apparaîtront pas.

Parcours de permission d'acceptation ATT et flux d'amorce

Évaluation empirique des performances d'acceptation

Le taux de consentement atteignable varie selon la catégorie d'application, la confiance de l'audience, le timing de l'invite et la clarté du texte. Les équipes doivent évaluer les variantes d'optimisation à l'aide de tests A/B contrôlés plutôt que de supposer des références sectorielles fixes.

Voir aussi : IDFA ──> Modèle d'attribution mobile

Mécanismes techniques du framework AppTrackingTransparency

Les quatre états du statut d'autorisation

L'accès à l'IDFA est strictement régi par l'énumération ATTrackingManager.AuthorizationStatus :

  • notDetermined (0) : La boîte de dialogue d'autorisation n'a pas encore été présentée à l'utilisateur.
  • restricted (1) : L'appareil est restreint par le contrôle parental, des profils de configuration pédagogiques ou des MDM d'entreprise ; l'autorisation de suivi ne peut pas être accordée et le commutateur des réglages est désactivé.
  • denied (2) : L'application n'a pas l'autorisation d'accéder aux données liées à l'application à des fins de suivi après que l'utilisateur a refusé la demande.
  • authorized (3) : L'utilisateur autorise le suivi. Sur les appareils iOS et iPadOS pris en charge, cela permet normalement d'accéder à un identifiant publicitaire non nul.

Statut d'autorisation ATT et comportement de l'IDFA

La règle de l'invite système unique

Le système d'exploitation iOS applique une règle de présentation unique pour ATTrackingManager.requestTrackingAuthorization. Une fois qu'un utilisateur interagit avec la modale native en sélectionnant « Autoriser » ou « Demander à l'app de ne pas suivre », le système mémorise le statut déterminé et n'affiche plus l'invite pendant cette installation de l'application.

Bien que l'invite système n'apparaisse pas une seconde fois, les utilisateurs peuvent ajuster manuellement leur autorisation de suivi à tout moment dans les Réglages iOS.

Comment iOS impose la mise à zéro des identifiants lorsque l'autorisation de suivi est refusée

Sous iOS 14.5 et versions ultérieures, l'identifiant publicitaire renvoie normalement que des zéros (00000000-0000-0000-0000-000000000000) lorsque l'autorisation de suivi n'a pas été accordée. Les développeurs doivent vérifier à la demande à la fois le statut d'autorisation ATT et la valeur de l'identifiant renvoyé, plutôt que de supposer qu'une chaîne mise en cache reste valide d'un lancement d'application à l'autre.

Architecture UX à fort taux de conversion : La stratégie de l'amorce de pré-autorisation

Anatomie d'une amorce de contexte efficace : Contraintes HIG d'Apple

Selon les directives d'interface humaine (HIG) d'Apple sur la confidentialité, les applications peuvent présenter un écran de pré-alerte personnalisé avant une invite d'autorisation du système si un contexte supplémentaire est nécessaire. Cependant, Apple impose des règles de conception strictes sur ces amorces de pré-autorisation :

  • Bouton d'action unique : L'écran de pré-autorisation ne doit fournir qu'un seul bouton (tel que « Continuer » ou « Suivant ») qui mène directement à l'invite du système. Il ne doit pas proposer de bouton « Annuler », « Fermer » ou « Pas maintenant » qui contourne ou retarde l'alerte du système.
  • Pas de mimétisme d'interface : L'écran d'amorce ne doit jamais imiter visuellement la boîte d'alerte du système iOS natif ou afficher de faux boutons étiquetés « Autoriser ».
  • Pas de coercition visuelle : L'interface ne doit pas utiliser de graphismes, de flèches ou de styles à fort contraste conçus pour manipuler ou orienter les utilisateurs vers la sélection d'« Autoriser » sur l'invite système suivante.

Conformité à la directive d'examen de l'App Store 5.1.2

En vertu de la section 5.1.2 des directives d'examen de l'App Store d'Apple, Apple impose des limites claires concernant les demandes d'autorisation :

  • Interdiction du suivi incitatif : Il est strictement interdit aux applications d'offrir des incitations financières, de la monnaie virtuelle, du contenu premium ou des remises en échange de l'octroi du consentement ATT. Cela constitue une violation de la directive 5.1.2 et peut entraîner le rejet de l'application.
  • Pas de blocage des fonctionnalités principales : Les applications ne peuvent pas bloquer les fonctionnalités principales, empêcher la création de compte ou dégrader les performances de l'application si un utilisateur refuse l'autorisation de suivi.
  • Primauté du choix de l'utilisateur : Le choix réel de l'utilisateur en matière de suivi doit toujours être effectué sur l'invite système native d'Apple.

Règles de conception de l'amorce de pré-permission ATT



Étape 1 : Intégration utilisateur / Réalisation de la valeur principale
                      │
                      ▼
Étape 2 : Écran d'amorce de pré-autorisation contextuel
         (Action unique "Continuer" ── Explique l'objectif)
                      │
                      ▼
Étape 3 : Modale système native iOS ATTrackingManager
         (L'utilisateur sélectionne "Autoriser" ou "Demander à l'app de ne pas suivre")
                      │
         ┌────────────┴────────────┐
         ▼                         ▼
   [.authorized]             [.denied]
   ATT autorisé         Solution de repli gracieuse
   (IDFA normalement    vers les API de la plateforme
    disponible)         (AdAttributionKit / SKAN)

Optimisation de la chaîne NSUserTrackingUsageDescription

Configuration d'Info.plist pour la transparence de l'objectif

La clé NSUserTrackingUsageDescription dans Info.plist définit la chaîne explicative affichée directement dans l'alerte système ATT native d'Apple. Selon la documentation d'Apple, cette chaîne doit être concise, spécifique et expliquer précisément comment les données de suivi sont utilisées.

Test de variantes de chaînes d'objectifs claires sans modifier la divulgation sous-jacente

Lors du test de variations de chaînes, chaque variante testée doit décrire avec précision et exhaustivité les pratiques de suivi réelles de l'application :

  • L'accent sur la personnalisation : Explique comment les données sont utilisées pour personnaliser les recommandations de contenu et les suggestions de produits.
  • L'accent sur la pertinence des annonces : Explique comment les données sont utilisées pour diffuser des promotions pertinentes et éviter les publicités répétitives.
  • L'accent sur la mesure de campagne : Explique comment les données sont utilisées pour mesurer les performances des partenariats publicitaires.

La configuration ci-dessous illustre un exemple de NSUserTrackingUsageDescription. Utilisez-la uniquement si le libellé décrit avec précision les pratiques de suivi réelles de l'application :


```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSUserTrackingUsageDescription</key>
    <string>Vos données seront utilisées pour diffuser des recommandations de produits personnalisées, des offres promotionnelles pertinentes et pour mesurer les performances des campagnes publicitaires.</string>
</dict>
</plist>

Conception du déclencheur de timing d'invite optimal dans le cycle de vie de l'utilisateur

Considérations de timing tout au long du parcours utilisateur

Bien que demander l'autorisation ATT au premier lancement soit techniquement autorisé, présenter l'invite après que l'utilisateur a fait l'expérience de l'utilité initiale du produit peut fournir un contexte plus pertinent pour la demande d'autorisation :

  • Déclencheur post-intégration : Présentation de l'invite une fois que l'utilisateur a terminé la configuration de son compte et configuré ses préférences initiales.
  • Déclencheur d'étape clé contextuelle : Présentation de l'invite après avoir accompli une action utilisateur essentielle (par exemple, terminer un tutoriel d'intégration dans un jeu, enregistrer un article favori dans une application de shopping ou ajouter un article aux signets dans une application de contenu).

Mise en œuvre technique d'ATTrackingManager en Swift

Gestion de l'état actif de l'application et sécurité des threads

Selon la documentation de l'API Apple, ATTrackingManager.requestTrackingAuthorization affiche la boîte de dialogue modale uniquement lorsque l'état de l'application est .active. Si une autre invite d'autorisation est active ou en attente, l'alerte du système n'apparaît pas et les demandes simultanées ne sont pas mises en file d'attente par le système d'exploitation.

Conditions de timing et de demande des invites ATT

L'implémentation ci-dessous sépare la gestion du statut d'autorisation d'une vue de pré-autorisation personnalisée illustrative :

import UIKit
import AppTrackingTransparency
import AdSupport

final class ATTManager {

    static let shared = ATTManager()
    private init() {}

    /// Évalue le statut d'autorisation actuel
    var currentStatus: ATTrackingManager.AuthorizationStatus {
        return ATTrackingManager.trackingAuthorizationStatus
    }

    /// Détermine si l'autorisation de suivi peut être présentée
    var canRequestAuthorization: Bool {
        return currentStatus == .notDetermined
    }

    /// Demande l'autorisation de suivi avec vérification de l'état actif de l'application
    /// - Parameter completion: Closure renvoyant le statut d'autorisation résolu
    func requestAuthorization(completion: @escaping (ATTrackingManager.AuthorizationStatus) -> Void) {
        guard canRequestAuthorization else {
            completion(currentStatus)
            return
        }

        // Vérifier que l'application est active avant d'invoquer requestTrackingAuthorization
        guard UIApplication.shared.applicationState == .active else {
            print("Demande ATT ignorée : l'application n'est pas active. Réessayez une fois active si le statut reste notDetermined.")
            completion(currentStatus)
            return
        }

        DispatchQueue.main.async {
            ATTrackingManager.requestTrackingAuthorization { status in
                DispatchQueue.main.async {
                    switch status {
                    case .authorized:
                        // Lire l'identifiant publicitaire actuel à la demande ; ne pas conserver d'IDFA en cache.
                        let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
                        print("ATT autorisé - IDFA disponible : \(idfa)")
                    case .denied:
                        print("ATT refusé - L'identifiant publicitaire renvoie des zéros")
                    case .restricted:
                        print("ATT restreint par le profil système")
                    case .notDetermined:
                        print("État ATT non résolu")
                    @unknown default:
                        print("État ATT inconnu rencontré")
                    }
                    completion(status)
                }
            }
        }
    }
}

/// UIViewController personnalisé illustratif pour une amorce de pré-autorisation conforme aux HIG
final class ATTPrimerViewController: UIViewController {

    private let continueButton = UIButton(type: .system)
    private let titleLabel = UILabel()
    private let descriptionLabel = UILabel()

    var onContinueTapped: (() -> Void)?

    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
    }

    private func setupUI() {
        view.backgroundColor = .systemBackground
        
        // Empêcher le balayage interactif pour fermer lors d'une présentation modale afin de garantir une navigation à chemin unique
        isModalInPresentation = true

        titleLabel.text = "Aidez-nous à personnaliser votre expérience"
        titleLabel.font = .boldSystemFont(ofSize: 20)
        titleLabel.textAlignment = .center
        titleLabel.numberOfLines = 0

        descriptionLabel.text = "Nous utilisons des données pour adapter les recommandations de produits et diffuser des offres promotionnelles pertinentes. Sur l'écran suivant, vous verrez l'invite d'autorisation standard d'Apple pour confirmer votre choix."
        descriptionLabel.font = .systemFont(ofSize: 15)
        descriptionLabel.textAlignment = .center
        descriptionLabel.textColor = .secondaryLabel
        descriptionLabel.numberOfLines = 0

        // Les recommandations HIG d'Apple préconisent une seule action Continuer ou Suivant
        continueButton.setTitle("Continuer", for: .normal)
        continueButton.titleLabel?.font = .boldSystemFont(ofSize: 17)
        continueButton.addTarget(self, action: #selector(handleContinue), for: .touchUpInside)

        let stack = UIStackView(arrangedSubviews: [titleLabel, descriptionLabel, continueButton])
        stack.axis = .vertical
        stack.spacing = 20
        stack.translatesAutoresizingMaskIntoConstraints = false

        view.addSubview(stack)
        NSLayoutConstraint.activate([
            stack.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            stack.centerYAnchor.constraint(equalTo: view.centerYAnchor),
            stack.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 32),
            stack.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -32)
        ])
    }

    @objc private func handleContinue() {
        // Les mécanismes de présentation et de fermeture sont illustratifs et doivent être adaptés à l'architecture de navigation de l'application.
        dismiss(animated: true) { [weak self] in
            self?.onContinueTapped?()
        }
    }
}

Récupération post-refus : Guider les utilisateurs vers les réglages système sans enfreindre la politique

Quand introduire des flux de réglages secondaires

Lorsqu'un utilisateur sélectionne « Demander à l'app de ne pas suivre », le statut d'autorisation devient .denied. Les appels ultérieurs à requestTrackingAuthorization renvoient .denied sans afficher de boîte de dialogue. Cependant, si un utilisateur initie par la suite une fonctionnalité qui bénéficie explicitement du suivi (comme la demande de paramètres de publicité personnalisée dans le profil de son compte), l'application peut fournir un chemin non coercitif vers les Réglages iOS.

Utilisation de UIApplication.openSettingsURLString

Pour guider un utilisateur vers le panneau des réglages de l'application, utilisez UIApplication.openSettingsURLString :

if let settingsURL = URL(string: UIApplication.openSettingsURLString),
   UIApplication.shared.canOpenURL(settingsURL) {
    UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil)
}

Notez que cette API ouvre la page de réglages dédiée de l'application ; elle ne fournit pas de lien universel direct vers l'écran global Réglages > Confidentialité et sécurité > Suivi.

Limites de la politique de l'App Store

  • Pas de harcèlement persistant : N'affichez pas de bannières récurrentes incitant les utilisateurs à activer le suivi dans les réglages.
  • Pas de blocage de fonctionnalités : Ne désactivez jamais les fonctionnalités principales simplement parce que le suivi reste désactivé dans les réglages.

Matrice de décision comparative : Stratégies de pré-autorisation vs. Invites au lancement à froid

Dimension Invite par défaut au lancement à froid Modale de permission strictement bloquante Amorce de pré-autorisation conforme aux HIG
Contexte utilisateur avant l'invite Faible (Aucun engagement produit) Variable (Bloque l'accès) Contextuel (Présenté après une interaction pertinente)
Recommandations d'interface/permission d'Apple Autorisé lorsque la demande et l'utilisation des données sont conformes Non autorisé lorsque l'accès ou la compensation dépend du suivi Autorisé lorsque les contraintes de pré-alerte HIG et les règles de suivi sont respectées
Contraintes d'interface de pré-alerte Apple N/A N/A Action unique Continuer/Suivant ; pas de fausses alertes
Timing d'interruption de l'autorisation Immédiat au lancement Bloquant Étape clé contextuelle
Taux d'acceptation observé Doit être mesuré de manière empirique Non autorisé Doit être mesuré de manière empirique

Foire aux questions (FAQ)

Une application peut-elle offrir de la monnaie virtuelle ou des réductions en échange de l'autorisation ATT ?
Non. La directive d'examen de l'App Store d'Apple 5.1.2 interdit explicitement d'offrir des incitations — telles que de la monnaie virtuelle, des fonctionnalités supplémentaires, de l'argent ou des réductions — en échange du consentement de l'utilisateur au suivi. Cela constitue une violation des directives de la plateforme et peut entraîner le rejet de l'application.
Une application peut-elle afficher une seconde invite ATT si l'utilisateur sélectionne initialement « Demander à l'app de ne pas suivre » ?
Non. iOS n'autorise la présentation de l'invite native <code>ATTrackingManager.requestTrackingAuthorization</code> qu'une seule fois par installation d'application. Si un utilisateur refuse l'autorisation, les appels ultérieurs renvoient <code>.denied</code> sans afficher de boîte de dialogue. Pour modifier l'autorisation, l'utilisateur doit mettre à jour manuellement son choix de suivi dans les Réglages iOS.
Une amorce de pré-autorisation enfreint-elle les directives de l'App Store d'Apple ?
Apple autorise une explication personnalisée de pré-alerte lorsqu'un contexte supplémentaire est nécessaire, à condition que l'écran soit conforme aux directives d'interface humaine (HIG) : il doit utiliser une action unique Continuer ou Suivant menant directement à l'invite du système, ne doit pas inclure d'action Annuler ou Fermer sur l'amorce, ne doit pas imiter l'alerte système native et ne doit pas utiliser de formulation ou d'indices visuels qui font pression sur les utilisateurs pour qu'ils sélectionnent Autoriser.

Résumé et cadre de décision

L'amélioration de l'expérience d'autorisation ATT nécessite une divulgation claire de l'objectif et un timing adapté au contexte. Lorsqu'une explication supplémentaire est nécessaire, une amorce de pré-autorisation conforme aux HIG peut fournir du contexte avant l'invite du système, tout en alignant l'expérience d'autorisation sur les directives d'interface et de suivi publiées par Apple.

Si un contexte d'attribution ou d'intégration est toujours nécessaire après un refus ATT, les applications peuvent utiliser des mécanismes autorisés de manière indépendante tels que AdAttributionKit, des intégrations SKAdNetwork existantes, ou un routage contextuel purement first-party qui respecte les règles de suivi d'Apple.

Pour le routage contextuel et le comportement d'attribution spécifiques au produit, consultez la documentation OpoInstall et évaluez l'implémentation par rapport aux exigences de suivi d'Apple applicables.

Documents associés

  • Concepts : Transparence du suivi des applications, optimisation de l'IDFA, amorces de pré-autorisation, entonnoirs de consentement

  • Technologies : Framework StoreKit, framework AppTrackingTransparency, SDK Mobile OpoInstall

  • Normes : Directives d'interface humaine d'Apple sur la confidentialité, directives d'examen de l'App Store, section 5.1.2

  • API : ATTrackingManager.requestTrackingAuthorization, UIApplication.openSettingsURLString, ASIdentifierManager

Documentation officielle

Share this article