Che cos'è il TNF, e perché cambia quello che succede al tocco?
Il TNF, il type name field, è di tre bit presenti in ogni record NDEF. Dice a un lettore come interpretare il campo tipo che segue, e quindi di che genere di cosa è fatto il carico utile. Impostalo male e il tag è perfettamente valido, perfettamente leggibile, e non fa proprio nulla.
Tre bit con un compito grosso
Android lo dice chiaramente: un record NDEF logico contiene sempre un TNF di tre bit che fornisce una tipizzazione di alto livello al resto del record. Non descrive il carico utile direttamente, descrive come leggere il campo tipo che descrive il carico.
Un livello di indirezione, largo tre bit, e decide se toccare il tuo tag apre un browser oppure non fa nulla.
I valori e cosa significano
Il riferimento di Android elenca sette costanti, che sono l'insieme completo.
| Valore | Il campo tipo contiene | Uso tipico |
|---|---|---|
| Well known | Un tipo definito dal NFC Forum | Indirizzi, testo, quasi tutti i tag di ogni giorno |
| MIME media | Un tipo MIME | Schede di contatto, carichi strutturati |
| Absolute URI | Un URI assoluto come definito dalla RFC 3986 | Raro, si confonde facilmente con il tipo URI well known |
| External type | Un nome di tipo esterno | Record propri di un'applicazione, avvio di app compreso |
| Empty | Niente, il record è vuoto | Un tag formattato senza contenuto |
| Unknown | Niente di utile | Carico di tipo non dichiarato |
| Unchanged | Niente, serve alla frammentazione | Seguito di un carico spezzato |
Cosa succede quando è sbagliato
Niente di clamoroso, ed è questo il problema. Il tag si legge, il record viene trovato, e la piattaforma conclude di non avere nulla su cui agire.
L'errore più diffuso è scrivere un indirizzo web come absolute URI quando la piattaforma si aspetta un record URI well known. Sono legittimi entrambi, portano lo stesso indirizzo entrambi, e uno solo fa scattare il comportamento che ci si aspetta.
Il secondo più diffuso è scrivere un indirizzo come testo semplice. L'indirizzo si vede in uno strumento di lettura, quindi il tag sembra giusto, e nessun browser si apre perché un record di testo non è una richiesta di andare da qualche parte.
Cosa significa nella pratica
Usa uno strumento che offra i tipi di contenuto per nome invece di chiederti di impostare dei campi. Scegliere «URL» e digitare un indirizzo produce un record corretto. Scegliere «testo» e digitare un indirizzo produce un tag valido che non fa nulla.
Quando un tag si legge ma non agisce, controlla il tipo di record prima di qualunque altra cosa. È la prima cosa da sospettare e non è quasi mai quella che si guarda, perché il contenuto è lì ed è giusto.
Android mette a disposizione metodi di appoggio per costruire record ben formati, e la sua documentazione consiglia di usarli invece di assemblare i campi a mano. Quel consiglio si generalizza: lascia impostare il TNF allo strumento.
Domande frequenti
Che TNF devo usare per l'indirizzo di un sito?
Il tipo well known per gli URI, che ogni strumento espone semplicemente come opzione URL. Absolute URI è un valore diverso che sembra giusto e non si comporta allo stesso modo sulle due piattaforme.
Posso cambiare il TNF di un record che esiste già?
Non sul posto. Si riscrive il record con il tipo corretto, il che su un tag sbloccato è solo un'altra scrittura. Su un tag bloccato non si può fare affatto.
Perché il mio record di testo si vede bene e non fa nulla?
Perché un record di testo è contenuto e non un'istruzione. La piattaforma lo mostra o lo ignora, e niente in esso chiede al telefono di aprire qualcosa.
Il TNF incide sullo spazio che un record occupa?
In modo marginale, attraverso la lunghezza del campo tipo che comporta. I tipi well known sono corti per costruzione, il che è una ragione per preferirli sui tag piccoli.