Qu'est-ce que le système de répartition des tags d'Android ?
La partie d'Android qui décide quelle application reçoit un tag. Elle analyse ce qui a été lu et essaie trois niveaux dans un ordre fixe, depuis une correspondance sur le contenu réel jusqu'à un dernier recours qui se contente d'annoncer qu'un tag a été trouvé. À partir d'Android 16, un tag portant une adresse web s'ouvre plutôt comme n'importe quel lien, et à partir d'Android 17 le dernier recours est déclaré obsolète.
Trois niveaux, dans l'ordre
La documentation Android décrit ce système comme analysant un tag découvert, catégorisant les données, et lançant une application qui s'y intéresse.
Le premier niveau s'applique quand le tag porte un contenu NDEF que le système sait rattacher à un type. Les applications déclarées pour ce type sont les candidates.
Les adresses web font exception à partir d'Android 16. Le guide NFC d'Android indique qu'un tag portant une adresse http ou https déclenche alors la demande ordinaire d'ouverture d'un lien, à laquelle répond le navigateur ou une application vérifiée pour cette adresse, et à partir d'Android 17 seulement une fois que l'utilisateur a donné suite à une notification proposant de l'ouvrir.
Le deuxième s'applique quand le contenu ne peut pas être rattaché ainsi. Les technologies du tag servent alors, et les applications déclarées pour une technologie sont les candidates.
Le troisième est le repli, lancé quand rien n'a traité les deux premiers. Il porte le tag et aucune interprétation, et la documentation le déclare obsolète à partir d'Android 17.
Pourquoi l'ordre compte
La précision l'emporte. Une application déclarée pour le contenu exact bat une application déclarée pour la technologie, qui bat le cas général.
Un tag qui ouvre la mauvaise chose est donc d'ordinaire un tag dont le contenu a correspondu à quelque chose de plus précis que prévu, plutôt qu'un système au comportement imprévisible.
Cela explique aussi pourquoi le même tag se comporte différemment sur deux téléphones. Le tag est identique et l'ensemble des candidates installées ne l'est pas.
Et cela explique le sélecteur : deux applications au même niveau, toutes deux éligibles, et aucune raison pour le système d'en préférer une.
Nommer une application depuis le tag
Un tag peut porter un enregistrement qui nomme une application Android, ce qui exprime une préférence pour elle plutôt que de laisser le choix ouvert.
La documentation note que cela peut être outrepassé par le système de répartition au premier plan : un enregistrement de nommage est donc une indication forte plutôt qu'une instruction.
Il coûte aussi des octets et ne fait rien sur les autres plateformes : il ne vaut la peine d'être ajouté que là où l'application est réellement l'objet du tag.
Pour un déploiement public, une adresse web est plus prévisible. Elle fonctionne sur tous les téléphones, que quelque chose soit installé ou non.
Ce qu'un déploiement doit en retenir
Écrivez un contenu dont vous savez prédire le traitement, ce qui veut dire en pratique une adresse web.
Testez sur un appareil qui ressemble à votre public plutôt que sur le vôtre, la liste des candidates étant ce qui diffère entre eux.
Attendez-vous à un sélecteur sur certains téléphones et concevez pour que ce ne soit pas une catastrophe : une destination claire qui a du sens quel que soit le navigateur qui l'ouvre.
Et ne comptez pas sur l'ouverture d'une application précise, sauf si vous maîtrisez les téléphones, parce que vous maîtrisez le tag et non ce qui est installé en face.
Questions fréquentes
Peut-on forcer une application à recevoir mon tag ?
Seulement là où vous maîtrisez l'appareil. Un enregistrement qui nomme une application exprime une préférence, et une application au premier plan peut l'outrepasser. À partir d'Android 16, l'utilisateur peut aussi interdire tout à fait à une application de recevoir des tags.
Pourquoi un sélecteur apparaît-il ?
Deux applications installées ou plus sont éligibles au même niveau : le système demande plutôt que de deviner.
Que se passe-t-il avec un tag non NDEF ?
Le niveau de la technologie s'applique au lieu de celui du contenu : les applications déclarées pour cette technologie sont les candidates.
iOS fonctionne-t-il de la même façon ?
Non. iOS agit sur un ensemble plus étroit de types d'enregistrements et insère une étape de confirmation dans le chemin d'arrière plan : le même tag se comporte donc différemment.