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.
| Valeur | Le champ de type contient | Usage typique |
|---|---|---|
| Type bien connu | Un type défini par le NFC Forum | Adresses, texte, la plupart des tags courants |
| Média MIME | Un type MIME | Fiches de contact, contenus structurés |
| URI absolue | Une URI absolue au sens du RFC 3986 | Rare, facilement confondue avec le type URI bien connu |
| Type externe | Un nom de type externe | Enregistrements propres à une application, dont le lancement d'application |
| Vide | Rien, l'enregistrement est vide | Un tag formaté sans contenu |
| Inconnu | Rien d'exploitable | Contenu de type non déclaré |
| Inchangé | Rien, employé pour le découpage | Suite 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.