Che cos'è il sistema di smistamento dei tag di Android?
La parte di Android che decide quale applicazione riceve un tag. Analizza quello che è stato letto e prova tre livelli in un ordine fisso, da una corrispondenza sul contenuto vero e proprio fino a un'ultima risorsa che si limita ad annunciare che un tag è stato trovato. A partire da Android 16, un tag con un indirizzo web si apre invece come qualunque altro collegamento, e a partire da Android 17 l'ultima risorsa è dichiarata obsoleta.
Tre livelli, nell'ordine
La documentazione di Android descrive il sistema come qualcosa che analizza un tag scoperto, ne classifica i dati e avvia un'applicazione interessata.
Il primo livello si applica quando il tag contiene contenuto NDEF che il sistema sa ricondurre a un tipo. I candidati sono le applicazioni registrate per quel tipo.
Gli indirizzi web fanno eccezione a partire da Android 16. La guida NFC di Android dice che un tag con un collegamento http o https innesca allora la normale richiesta di aprire un collegamento, a cui risponde il browser o un'applicazione verificata per quell'indirizzo, e a partire da Android 17 solo dopo che l'utente ha risposto a una notifica per aprirlo.
Il secondo si applica quando il contenuto non si lascia ricondurre così. Al suo posto si usano le tecnologie del tag, quindi i candidati sono le applicazioni registrate per una tecnologia.
Il terzo è il ripiego, avviato quando nessuno ha trattato i primi due. Porta il tag e nessuna interpretazione, e la documentazione lo dichiara obsoleto a partire da Android 17.
Perché l'ordine conta
Vince la specificità. Un'applicazione registrata per il contenuto esatto batte una registrata per la tecnologia, che batte il caso generale.
Quindi un tag che apre la cosa sbagliata è di solito un tag il cui contenuto ha corrisposto a qualcosa di più specifico di quanto ti aspettassi, e non un sistema che si comporta in modo imprevedibile.
Spiega anche perché lo stesso tag si comporta diversamente su due telefoni. Il tag è identico e l'insieme dei candidati installati non lo è.
E spiega il selettore: due applicazioni allo stesso livello, entrambe ammissibili, e nessuna base perché il sistema ne preferisca una.
Nominare un'applicazione dal tag
Un tag può portare un record che nomina un'applicazione Android, il che esprime una preferenza per quell'applicazione invece di lasciare aperta la scelta.
La documentazione nota che il sistema di smistamento in primo piano lo può scavalcare, quindi un record che nomina è un indizio forte e non un'istruzione.
Costa anche byte e non fa nulla sulle altre piattaforme, quindi vale la pena aggiungerlo solo dove l'applicazione è davvero il senso del tag.
Per un'installazione destinata al pubblico un indirizzo web è più prevedibile. Funziona su ogni telefono, che ci sia installato qualcosa o no.
Cosa deve trarne un'installazione
Scrivi contenuto il cui trattamento sai prevedere, che in pratica vuol dire un indirizzo web.
Prova su un apparecchio che somigli a quelli del tuo pubblico e non sul tuo, dato che è l'elenco dei candidati a cambiare fra i due.
Aspettati un selettore su certi telefoni e progetta perché non sia un disastro: una destinazione chiara che abbia senso qualunque browser si apra.
E non contare su una particolare applicazione che si apre, a meno che i telefoni non siano tuoi, perché controlli il tag e non quello che è installato dall'altra parte.
Domande frequenti
Posso costringere un'applicazione a ricevere il mio tag?
Solo dove controlli l'apparecchio. Un record che nomina un'applicazione esprime una preferenza, e un'applicazione in primo piano la può scavalcare. A partire da Android 16, l'utente può anche impedire del tutto a un'applicazione di ricevere tag.
Perché compare un selettore?
Due o più applicazioni installate sono ammissibili allo stesso livello, quindi il sistema chiede invece di tirare a indovinare.
Cosa succede con un tag non NDEF?
Si applica il livello della tecnologia invece di quello del contenuto, quindi i candidati sono le applicazioni registrate per quella tecnologia.
iOS funziona allo stesso modo?
No. iOS agisce su un insieme più stretto di tipi di record e inserisce un passo di conferma nella strada in background, quindi lo stesso tag si comporta diversamente.