Pourquoi un iPhone affiche-t-il une feuille de lecture quand une application lit un tag ?
Parce que c'est le système qui mène la lecture, non l'application. La feuille est le système qui prend en charge l'interaction pour une durée bornée, ce qui explique le délai d'expiration, le libellé standard, et l'impossibilité pour une application de lire discrètement en arrière plan.
Qui lit réellement
L'application demande une session de lecture. Le système accepte, présente sa propre interface, mène l'interaction avec le tag, et lui remet le résultat.
Apple documente le cadriciel sous-jacent sous le nom de Core NFC.
La conséquence est que la feuille n'est pas l'écran de l'application. Elle appartient au système, et c'est pourquoi elle est identique d'une application à l'autre et pourquoi son libellé n'est pas quelque chose qu'un développeur a choisi.
C'est borné dans le temps
Une session est une période pendant laquelle le système cherche des tags. Elle se termine quand l'application la ferme, ce qu'elle peut faire dès le premier tag lu, quand l'utilisateur l'annule, ou au bout d'un délai.
C'est pourquoi une feuille de lecture laissée ouverte finit par abandonner au lieu d'attendre indéfiniment, ce qui surprend qui s'attend à la voir rester prête.
Pendant cette période, une même session peut lire un tag après l'autre si l'application la garde ouverte. Ce qui ralentit une série, c'est le démarrage des sessions : une par tag quand l'application ferme la session après chaque lecture, et une nouvelle chaque fois qu'une session ouverte expire. C'est pourquoi les applications qui lisent beaucoup de tags donnent une impression différente sur iOS et sur Android.
Ce que cela explique
Pourquoi une application ne peut pas lire un tag en silence. Il n'y a pas de voie discrète, le système se présentant toujours.
Pourquoi une application ne peut pas lire en arrière plan. Une session appartient à une application en cours d'usage, et sinon il n'y a personne à qui présenter une feuille.
Pourquoi écrire demande d'avoir le téléphone en main. Le même modèle de session s'applique, l'application fournissant le contenu pendant une interaction menée par le système.
Et pourquoi l'expression « lancement manuel » revient sans cesse : une application qui n'est pas ouverte n'a pas demandé de session, et rien ne cherche donc de tags pour son compte.
Prenez NFC Tools. Sur iOS, elle demande un iPhone 7 ou un modèle ultérieur sous iOS 15.6 au minimum, et l'application doit être lancée manuellement. La lecture en arrière plan est disponible à partir de l'iPhone XS et XR.
Bien s'en servir
Attendez-vous à la feuille et laissez les autres s'y attendre aussi. Dans un flux où quelqu'un lit beaucoup de tags, le rythme dépend de l'application : démarrer une fois puis présenter les tags l'un après l'autre si elle garde la session ouverte, en démarrant une nouvelle session quand la précédente expire, ou démarrer, présenter, refermer, recommencer si elle ferme la session après chaque tag.
Tenez le téléphone immobile pendant la session plutôt que de le présenter à répétition, le système cherchant déjà et le mouvement étant ce qui l'interrompt.
Pour une série de production, c'est une raison de préférer Android comme appareil d'encodage : l'interaction est plus légère par tag, ce qui s'additionne sur des centaines.
Et pour un déploiement public rien de tout cela ne s'applique, les visiteurs employant la voie d'arrière plan ou rien du tout.
Questions fréquentes
Une application peut-elle lire sans afficher la feuille ?
Non. Le système mène l'interaction et présente sa propre interface : il n'y a pas de voie discrète pour une application.
Pourquoi la feuille expire-t-elle ?
Une session est bornée, se terminant quand l'application la ferme, quand l'utilisateur l'annule ou au bout d'un délai. Elle n'est pas conçue pour attendre indéfiniment.
Pourquoi lire beaucoup de tags paraît-il lent sur iPhone ?
Parce que chaque session doit être démarrée depuis l'application, et qu'aucune ne dure indéfiniment. Une même session peut lire plusieurs tags si l'application la garde ouverte, mais elle expire tout de même pendant une longue série, et une application qui la ferme après chaque tag en démarre une nouvelle pour chacun. Sur un lot, cela s'additionne.
Cela vaut-il aussi pour l'écriture ?
Oui. L'écriture emploie le même modèle de session, et c'est pourquoi le téléphone doit être en main avec l'application ouverte.