Tous les articles

Le TCF dans une application mobile : où vit le consentement, et comment le lire

Sur le web, le consentement IAB se voit : un cookie, et les outils du navigateur pour le lire. Dans une application mobile, le même cadre existe, mais il vit dans un fichier que personne n’ouvre jamais. Voici où le TCF s’écrit dans une application Android, ce qu’il contient, et ce que sa lecture révèle, ou pas, du comportement réel.

Un contrat de stockage : des clés que tout le monde lit

La spécification CMP API de l’IAB fixe le mécanisme : la CMP, l’outil qui affiche la bannière et recueille le choix, écrit le résultat dans le stockage par défaut de l’application, les SharedPreferences, sous des clés normalisées préfixées IABTCF_. On y trouve notamment IABTCF_gdprApplies, qui dit si le RGPD s’applique, IABTCF_TCString, la chaîne complète du consentement, et ses déclinaisons décodées comme IABTCF_PurposeConsents ou IABTCF_VendorConsents.

Cette normalisation est le cœur du système : n’importe quel SDK intégré à l’application peut lire le choix de l’utilisateur sans rien demander à la CMP qui l’a recueilli. C’est aussi ce qui rend le mécanisme fragile : la lecture est une convention, pas une contrainte du système.

La TC string, une donnée qui en encode d’autres

La pièce maîtresse est la TC string. Cette chaîne compacte encode tout le choix exprimé : l’identifiant et la version de la CMP qui l’a recueilli, les horodatages de création et de mise à jour, la version de la liste des fournisseurs, les finalités acceptées, les acteurs autorisés, le pays de l’éditeur. Elle se décode entièrement hors ligne, avec la seule spécification.

Ce n’est pas un détail technique neutre : la Cour de justice de l’Union européenne a jugé que la TC string est une donnée personnelle, et la justice belge l’a confirmé depuis. La chaîne qui transporte le consentement relève elle-même du RGPD.

Qui la lit, et quand

Chaque SDK publicitaire ou de mesure lit ces clés à son initialisation, puis s’y réfère pour décider de ce qu’il émet. Le cadre continue d’évoluer : la version 2.3 du TCF, lancée en avril 2025, rend obligatoire la section des fournisseurs divulgués dans la TC string, et devait être adoptée par tous les participants au 28 février 2026.

Tout repose donc sur une chaîne de bonne volonté : la CMP écrit, les SDK lisent, chacun est censé en tirer les conséquences. La question utile n’est pas de savoir si la chaîne est bien formée. C’est de savoir si le comportement suit.

Ce que le stockage ne dit pas

Lire les clés IABTCF_ dit ce que l’application déclare avoir recueilli. Trois écarts, eux, ne se voient que dans le trafic : les requêtes parties avant que les clés existent, les données qui filent vers un acteur que la chaîne ne mentionne pas, et le trafic qui continue après un refus.

La vérification complète confronte donc les deux lectures : le signal écrit dans le stockage, et le comportement observé sur l’appareil, horodatage à l’appui. C’est ce que fait un audit d’application mobile : chaque échange sortant est situé par rapport au choix exprimé dans la bannière, et le constat, factuel, laisse la qualification au DPO. Pour un fournisseur de SDK, la même vérification se mène côté régie, application par application.

Sources

Chaque constat de cet article renvoie à l’un de ces documents.

  1. IAB Tech LabIAB Tech Lab - CMP API v2Spécification du Transparency and Consent Framework
  2. IABTransparency and Consent Framework (TCF)IAB Europe
  3. CJUE ’24Arrêt C-604/22, IAB Europe contre APDCour de justice de l’Union européenne, 7 mars 2024

Questions fréquentes

Où le consentement TCF est-il stocké dans une application Android ?
Dans les SharedPreferences par défaut de l’application, sous des clés normalisées préfixées IABTCF_. C’est la spécification CMP API de l’IAB qui l’impose : tout SDK intégré peut ainsi lire le choix de l’utilisateur sans dépendre de la CMP qui l’a recueilli.
Qu’est-ce que la TC string ?
La chaîne compacte qui encode le choix de l’utilisateur : finalités acceptées, acteurs autorisés, version de la liste des fournisseurs, horodatages. Elle se décode avec la seule spécification, et la Cour de justice de l’Union européenne a jugé qu’elle constitue une donnée personnelle.
Un SDK peut-il ignorer la TC string ?
Techniquement, rien ne l’en empêche : la lecture des clés est une convention d’intégration, pas une contrainte du système. C’est pourquoi le comportement réel, ce qui part, vers qui, à quel moment, reste la vérification qui compte, et elle s’observe sur l’appareil.
Le TCF est-il obligatoire pour une application mobile ?
Aucun texte ne l’impose en tant que tel : c’est un cadre sectoriel. Il devient incontournable par ricochet : Google exige une CMP certifiée intégrée au TCF pour servir de la publicité personnalisée dans l’EEE, et la chaîne programmatique le suppose.

Et l’application que vous auditez, qu’embarque-t-elle réellement ?