Ir para o conteúdo
Idioma: PT

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.

Os valores do TNF e o que cada um declara, conforme as constantes NdefRecord do Android
ValorO campo de tipo contémUso típico
Bem conhecidoUm tipo definido pelo NFC ForumURLs, texto, quase todas as tags do dia a dia
Mídia MIMEUm tipo MIMECartões de contato, cargas estruturadas
URI absolutoUm URI absoluto conforme a RFC 3986Raro, confunde-se com facilidade com o tipo URI bem conhecido
Tipo externoUm nome de tipo externoRegistros próprios de um aplicativo, inclusive abrir um app
VazioNada, o registro está vazioUma tag formatada sem conteúdo
DesconhecidoNada de útilCarga útil de tipo não declarado
InalteradoNada, usado no fatiamentoContinuaçã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.