Traqio.

Concepts

Attribution iOS : SKAdNetwork et Apple Ads

Mesurer iOS sans l’IDFA : postbacks SKAdNetwork signés, décodés avec votre mapping de valeurs de conversion, et attribution Apple Ads via AdServices.

iOS n’a pas d’install referrer, et Traqio ne lit pas l’IDFA par défaut. Il mesure iOS via les deux canaux qu’Apple a conçus pour l’attribution sans suivi des utilisateurs : SKAdNetwork (SKAN), le framework d’attribution respectueux de la vie privée d’Apple, pour tous les réseaux publicitaires ; et le jeton d’attribution Apple Ads, pour les publicités d’Apple elle-même. Aucun des deux n’a besoin de la demande App Tracking Transparency.

SKAdNetwork en un paragraphe#

Quand une publicité d’un réseau publicitaire mène à une installation, iOS l’enregistre sur l’appareil. Après la fermeture de la fenêtre de conversion, plus un délai aléatoire d’au moins 24 heures, Apple envoie un postback — signé par Apple — au réseau publicitaire et, si l’app en déclare un, à l’endpoint du développeur. Le postback nomme la campagne (un identifiant de source) et porte la valeur de conversion de l’app. Il ne nomme jamais l’utilisateur ni l’appareil. La mesure SKAN est donc agrégée, grossière et tardive par conception : Traqio la présente par campagne, jamais par utilisateur.

Recevoir les postbacks#

Déclarez Traqio comme endpoint d’attribution de votre app, dans Info.plist :

<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://api.traqio.app</string>

L’origine seulement — Apple ajoute son propre chemin. Les apps Expo le définissent dans app.json (voir Expo). Sans cela, Traqio ne voit que ce que les réseaux veulent bien rapporter sur eux-mêmes.

Ce que Traqio fait de chaque postback :

  • Il vérifie la signature d’Apple — SKAdNetwork 2.1, 2.2, 3.0 et 4.0. Un postback dont la vérification échoue n’est ni stocké ni compté. Les versions 1.0 et 2.0, issues de versions d’iOS qui ne portent plus de trafic publicitaire, sont refusées.
  • Il écarte les doublons sur l’identifiant de transaction d’Apple, et conserve l’original signé intact, pour que tout décodage puisse être revérifié plus tard.
  • Il compte une installation uniquement pour un postback gagnant de la première fenêtre — jusqu’à trois postbacks arrivent par installation.

La valeur de conversion n’est pas signée

Apple laisse la valeur de conversion en dehors des champs signés. On lui fait confiance dans la limite de votre mapping, et jamais comme preuve de revenus.

Votre mapping de valeurs de conversion#

Six bits signifient ce que vous décidez. Dans la console (votre produit → Intégrations → Configuration SKAN), vous publiez un mapping dans l’un de deux modes :

ModeLa valeur fine (0–63) est…Elle se décode en
Revenusun index dans des tranches de revenus croissantesla borne inférieure de la tranche — « au moins X »
Événementsun masque de bits sur jusqu’à six étapes nomméesles étapes que l’utilisateur a atteintes

Ajoutez des valeurs grossières (low, medium, high) pour SKAN 4 : Apple envoie la valeur grossière à la place de la valeur fine dans ses niveaux de confidentialité les plus bas et dans les deuxième et troisième fenêtres, si bien que sans elles la plupart des postbacks ne se décodent en rien. Chaque seuil grossier doit être l’une de vos tranches de revenus — sinon un postback SKAN 3 et un postback SKAN 4 pour la même installation se décoderaient en deux revenus différents ; la console le refuse.

Un mapping est publié, jamais modifié sur place : un postback de troisième fenêtre peut arriver 35 jours après l’installation, donc modifier un mapping crée une nouvelle version, et chaque postback enregistre la version avec laquelle il a été décodé. Publiez-en un avant votre première campagne iOS — sans mapping, les installations sont enregistrées mais les postbacks n’ont rien à décoder.

Les trois fenêtres de conversion#

FenêtreHeures après l’installationPorte
10 – 48la valeur fine (ou la grossière dans les niveaux bas)
248 – 168la valeur grossière uniquement
3168 – 840la valeur grossière uniquement

Vous pouvez verrouiller une fenêtre plus tôt — après un certain nombre d’heures, ou à la prochaine mise à jour — pour que son postback arrive plus vite. Le prix, c’est tout ce que cette fenêtre aurait mesuré après le verrouillage ; la console affiche cet écart avant l’enregistrement. Le calendrier fait partie du mapping : le modifier ne demande donc aucune nouvelle version de l’app.

Sur l’appareil#

Le SDK récupère le mapping publié, cumule les revenus d’un lancement à l’autre et définit la valeur : chaque valeur suivie — achats et revenus publicitaires AdMob — la fait évoluer, et elle ne fait que monter, comme l’exige SKAN. C’est complet dans les SDK React Native / Expo et iOS natif ; les autres enregistrent l’installation auprès de SKAdNetwork sans définir de valeurs (matrice).

Comment SKAN apparaît dans les rapports#

  • Les installations SKAN et leurs revenus décodés sont présentés par campagne, à part des revenus mesurés et du ROAS.
  • Les postbacks qui ne portaient aucune valeur exploitable — le seuil de confidentialité d’Apple — sont comptés comme masqués, pas écartés.
  • Le flag de retéléchargement d’Apple est présenté dans sa propre colonne.
  • Chaque postback reçu peut être inspecté tel que reçu, pour votre propre vérification.

Apple Ads#

Apple Ads (anciennement Search Ads) attribue ses propres installations via le framework AdServices, disponible à partir d’iOS 14.3. Le SDK demande à AdServices un jeton d’attribution — un ticket opaque valable 24 heures, qui ne dit rien de l’utilisateur — et l’envoie à Traqio. Traqio le résout auprès d’Apple, en réessayant tant qu’Apple ne l’a pas encore enregistré, et attribue l’installation à la campagne, au groupe d’annonces et au mot-clé Apple Ads quand Apple le confirme.

Apple décide du niveau de détail de sa réponse selon le statut ATT que l’utilisateur a déjà choisi pour votre app. La plupart des installations ne viennent pas d’Apple Ads ; pour celles-là, Apple répond qu’il n’y a rien à attribuer et l’installation reste telle quelle. Les installations Apple Ads apparaissent comme Auto-attribué.

Ce que Traqio n’utilise pas#

  • L’IDFA, par défaut — le SDK n’affiche jamais d’invite ATT, et ne lit l’IDFA que si vous activez collectAdvertisingId et que l’utilisateur a déjà autorisé le suivi (utile pour Unity Ads et AppLovin).
  • Le presse-papiers — le lire affiche la bannière de collage d’iOS et ne couvre que Safari.
  • Le fingerprinting d’appareil, par défaut. Si vous activez le rapprochement probabiliste web vers app, ne remontez le consentement qu’après que l’utilisateur a autorisé App Tracking Transparency.

Questions fréquentes#

Qu’est-ce qu’une valeur de conversion SKAdNetwork ?
Un nombre de 0 à 63 (six bits) que l’app définit sur l’appareil après l’installation, et qu’Apple renvoie dans le postback SKAdNetwork. Sa signification dépend de l’annonceur : dans Traqio, soit une tranche de revenus, soit un ensemble de jusqu’à six étapes in-app, selon le mapping que vous publiez. SKAdNetwork 4 ajoute une valeur grossière — low, medium ou high — qu’Apple envoie à la place de la valeur fine dans ses niveaux de confidentialité les plus bas et dans les deuxième et troisième fenêtres.
Pourquoi certaines campagnes iOS n’ont-elles pas de valeur de conversion ?
Apple retient la valeur de conversion — et parfois davantage — quand une campagne a trop peu d’installations pour atteindre son seuil d’anonymat (crowd anonymity). Traqio compte ces postbacks et indique combien ont été masqués, au lieu de les cacher ou d’inventer une valeur.
Traqio affiche-t-il la demande App Tracking Transparency ?
Non, et il n’en a pas besoin. SKAdNetwork et le jeton d’attribution Apple Ads fonctionnent tous deux sans ATT. Traqio ne lit l’IDFA que si vous l’activez et que votre app a déjà l’ATT : pour la plupart des installations, les résultats iOS sont donc au niveau de la campagne pour SKAdNetwork, et au niveau de l’installation uniquement pour Apple Ads.

Mis à jour le 22 octobre 2026