Aller au contenu
Langue : FR

Qu'est-ce que le TNF, et pourquoi change-t-il ce qui se passe au contact ?

Le TNF, champ de nom de type, est un ensemble de trois bits présent dans tout enregistrement NDEF. Il indique à un lecteur comment interpréter le champ de type qui suit, et donc la nature du contenu. Mal réglé, le tag est parfaitement valide, parfaitement lisible, et ne fait rien du tout.

Trois bits pour un grand rôle

Android le dit clairement : un enregistrement NDEF logique contient toujours un TNF de trois bits qui donne un typage de haut niveau au reste de l'enregistrement. Il ne décrit pas le contenu directement, il décrit comment lire le champ de type qui décrit le contenu.

Un niveau d'indirection, large de trois bits, et il décide si toucher votre tag ouvre un navigateur ou ne fait rien.

Les valeurs et ce qu'elles veulent dire

La référence Android énumère sept constantes, ce qui en est l'ensemble complet.

Les valeurs de TNF et ce que chacune déclare, d'après les constantes NdefRecord d'Android
ValeurLe champ de type contientUsage typique
Type bien connuUn type défini par le NFC ForumAdresses, texte, la plupart des tags courants
Média MIMEUn type MIMEFiches de contact, contenus structurés
URI absolueUne URI absolue au sens du RFC 3986Rare, facilement confondue avec le type URI bien connu
Type externeUn nom de type externeEnregistrements propres à une application, dont le lancement d'application
VideRien, l'enregistrement est videUn tag formaté sans contenu
InconnuRien d'exploitableContenu de type non déclaré
InchangéRien, employé pour le découpageSuite d'un contenu scindé

Ce qui se passe quand il est faux

Rien de spectaculaire, et c'est là le problème. Le tag se lit, l'enregistrement est trouvé, et la plateforme conclut qu'elle n'a rien sur quoi agir.

L'erreur la plus courante est d'écrire une adresse web en URI absolue quand la plateforme attend un enregistrement URI bien connu. Les deux sont légitimes, les deux portent la même adresse, et une seule déclenche le comportement attendu.

La deuxième plus courante est d'écrire une adresse en texte simple. L'adresse est visible dans un outil de lecture, le tag paraît donc correct, et aucun navigateur ne s'ouvre car un enregistrement de texte n'est pas une demande d'aller quelque part.

Ce que cela veut dire en pratique

Employez un outil qui propose des types de contenu par leur nom plutôt que de vous demander de régler des champs. Choisir « URL » et saisir une adresse produit un enregistrement correct. Choisir « texte » et saisir une adresse produit un tag valide qui ne fait rien.

Quand un tag se lit sans agir, contrôlez le type d'enregistrement avant toute autre chose. C'est le premier soupçon à avoir et c'est presque jamais ce qu'on regarde, le contenu étant là sous les yeux et paraissant juste.

Android fournit des méthodes utilitaires pour bâtir des enregistrements bien formés, et sa documentation recommande de les employer plutôt que d'assembler les champs à la main. Ce conseil se généralise : laissez l'outil régler le TNF.

Questions fréquentes

Quel TNF employer pour une adresse de site ?

Le type bien connu pour les URI, que tout outil expose simplement comme une option « URL ». L'URI absolue est une autre valeur, qui paraît correcte et ne se comporte pas de la même façon sur les deux plateformes.

Peut-on changer le TNF d'un enregistrement existant ?

Pas sur place. Vous réécrivez l'enregistrement avec le bon type, ce qui sur un tag déverrouillé est simplement une écriture de plus. Sur un tag verrouillé, cela ne se fait pas du tout.

Pourquoi mon enregistrement de texte s'affiche-t-il bien sans rien faire ?

Parce qu'un enregistrement de texte est un contenu et non une instruction. La plateforme l'affiche ou l'ignore, et rien en lui ne demande au téléphone d'ouvrir quoi que ce soit.

Le TNF change-t-il la place occupée par un enregistrement ?

Marginalement, par la longueur du champ de type qu'il implique. Les types bien connus sont courts par conception, ce qui est une raison de les préférer sur les petits tags.