O que é o TNF, e por que ele muda o que acontece no toque?
O TNF, o campo de nome de tipo, são três bits presentes em todo registro NDEF. Ele diz a um leitor como interpretar o campo de tipo que vem depois e, portanto, que tipo de coisa é a carga útil. Erre-o e a tag fica perfeitamente válida, perfeitamente legível, e não faz absolutamente nada.
Três bits com um trabalho grande
O Android diz isso sem rodeios: um registro NDEF lógico sempre contém um TNF de três bits que fornece a tipagem de alto nível do resto do registro. Ele não descreve a carga útil diretamente, ele descreve como ler o campo de tipo que descreve a carga útil.
Um nível de indireção, três bits de largura, e ele decide se tocar na sua tag abre um navegador ou não faz nada.
Os valores e o que eles querem dizer
A referência do Android lista sete constantes, que são o conjunto completo.
| Valor | O campo de tipo contém | Uso típico |
|---|---|---|
| Bem conhecido | Um tipo definido pelo NFC Forum | URLs, texto, quase todas as tags do dia a dia |
| Mídia MIME | Um tipo MIME | Cartões de contato, cargas estruturadas |
| URI absoluto | Um URI absoluto conforme a RFC 3986 | Raro, confunde-se com facilidade com o tipo URI bem conhecido |
| Tipo externo | Um nome de tipo externo | Registros próprios de um aplicativo, inclusive abrir um app |
| Vazio | Nada, o registro está vazio | Uma tag formatada sem conteúdo |
| Desconhecido | Nada de útil | Carga útil de tipo não declarado |
| Inalterado | Nada, usado no fatiamento | Continuação de uma carga útil dividida |
O que acontece quando ele está errado
Nada de dramático, que é justamente o problema. A tag é lida, o registro é encontrado, e a plataforma conclui que não há nada sobre o que agir.
O erro mais comum é gravar um endereço da web como URI absoluto quando a plataforma espera um registro URI bem conhecido. Os dois são legítimos, os dois guardam o mesmo endereço, e só um dispara o comportamento que as pessoas esperam.
O segundo mais comum é gravar uma URL como texto simples. O endereço fica visível numa ferramenta de leitura, então a tag parece correta, e nenhum navegador abre porque um registro de texto não é um pedido para ir a lugar nenhum.
O que isso quer dizer na prática
Use uma ferramenta que ofereça tipos de conteúdo pelo nome em vez de pedir que você ajuste campos. Escolher “URL” e digitar um endereço produz um registro correto. Escolher “texto” e digitar um endereço produz uma tag válida que não faz nada.
Quando uma tag é lida e não age, confira o tipo de registro antes de conferir qualquer outra coisa. É a primeira coisa a suspeitar e quase nunca é a coisa que as pessoas olham, porque o conteúdo está ali e parece bom.
O Android oferece métodos auxiliares para construir registros bem formados, e a documentação dele recomenda usá-los em vez de montar os campos à mão. Esse conselho se generaliza: deixe a ferramenta definir o TNF.
Perguntas frequentes
Qual TNF eu devo usar para um endereço de site?
O tipo bem conhecido para URIs, que toda ferramenta expõe simplesmente como uma opção de URL. O URI absoluto é um valor diferente, que parece correto e não se comporta do mesmo jeito nas duas plataformas.
Eu posso mudar o TNF de um registro existente?
Não no lugar. Você regrava o registro com o tipo correto, o que numa tag desbloqueada é simplesmente outra gravação. Numa tag bloqueada não dá para fazer de jeito nenhum.
Por que meu registro de texto aparece certo e não faz nada?
Porque um registro de texto é conteúdo e não uma instrução. A plataforma o exibe ou o ignora, e nada nele pede que o celular abra alguma coisa.
O TNF afeta quanto espaço um registro ocupa?
Marginalmente, pelo tamanho do campo de tipo que ele implica. Os tipos bem conhecidos são curtos por projeto, o que é uma das razões para preferi-los em tags pequenas.