Ir para o conteúdo
Idioma: PT

O que é o sistema de despacho de tags do Android?

A parte do Android que decide qual aplicativo recebe uma tag. Ela analisa o que foi lido e tenta três níveis numa ordem fixa, de uma correspondência com o conteúdo de fato até um último recurso que simplesmente anuncia que uma tag foi encontrada. A partir do Android 16, uma tag com um endereço da web abre em vez disso como qualquer outro link, e a partir do Android 17 o último recurso foi descontinuado.

Três níveis, em ordem

A documentação do Android descreve o sistema como algo que analisa uma tag descoberta, categoriza os dados, e abre um aplicativo interessado neles.

O primeiro nível se aplica quando a tag guarda conteúdo NDEF que o sistema consegue mapear para um tipo. Os aplicativos registrados para aquele tipo são os candidatos.

Os endereços da web são a exceção a partir do Android 16. O guia de NFC do Android diz que uma tag com um link http ou https dispara então o pedido comum de abrir um link, ao qual responde o navegador ou um aplicativo verificado para aquele endereço, e a partir do Android 17 só depois que o usuário responde a um aviso para abri-lo.

O segundo se aplica quando o conteúdo não pode ser mapeado desse jeito. As tecnologias da tag são usadas em vez dele, então os aplicativos registrados para uma tecnologia são os candidatos.

O terceiro é a reserva, acionada quando nada tratou nenhum dos dois primeiros. Ela carrega a tag e nenhuma interpretação, e a documentação a descontinua a partir do Android 17.

Por que a ordem importa

A especificidade ganha. Um aplicativo registrado para o conteúdo exato vence um registrado para a tecnologia, que vence o caso geral.

Então uma tag que abre a coisa errada em geral é uma tag cujo conteúdo correspondeu a algo mais específico do que você esperava, em vez de um sistema se comportando de forma imprevisível.

Isso também explica por que a mesma tag se comporta de outro jeito em dois celulares. A tag é idêntica e o conjunto de candidatos instalados não é.

E explica o seletor: dois aplicativos no mesmo nível, os dois elegíveis, e nenhuma base para o sistema preferir um.

Nomear um aplicativo a partir da tag

Uma tag pode carregar um registro que nomeia um aplicativo Android, o que expressa uma preferência por aquele aplicativo em vez de deixar a escolha aberta.

A documentação observa que isso pode ser sobreposto pelo despacho em primeiro plano, então um registro que nomeia é uma dica forte e não uma instrução.

Ele também custa bytes e não faz nada nas outras plataformas, então vale acrescentar só onde o aplicativo é genuinamente o ponto da tag.

Para uma instalação aberta ao público, um endereço da web é mais previsível. Ele funciona em todo celular, tenha ou não alguma coisa instalada.

O que uma instalação deve tirar disso

Grave conteúdo cujo tratamento você consegue prever, o que na prática quer dizer um endereço da web.

Teste num aparelho que se pareça com o do seu público em vez de no seu, já que a lista de candidatos é o que difere entre eles.

Espere um seletor em alguns celulares e projete para que isso não seja um desastre: um destino claro que faça sentido em qualquer navegador que abra.

E não conte com um aplicativo específico abrindo a não ser que você controle os celulares, porque você controla a tag e não o que está instalado do outro lado.

Perguntas frequentes

Dá para forçar um aplicativo a receber a minha tag?

Só onde você controla o aparelho. Um registro que nomeia um aplicativo expressa uma preferência, e um aplicativo em primeiro plano pode sobrepô-la. A partir do Android 16, o usuário também pode impedir de vez que um aplicativo receba tags.

Por que aparece um seletor?

Dois ou mais aplicativos instalados são elegíveis no mesmo nível, então o sistema pergunta em vez de adivinhar.

O que acontece com uma tag sem NDEF?

O nível da tecnologia se aplica em vez do nível do conteúdo, então os aplicativos registrados para aquela tecnologia são os candidatos.

O iOS funciona do mesmo jeito?

Não. O iOS age sobre um conjunto mais estreito de tipos de registro e insere uma etapa de confirmação no caminho em segundo plano, então a mesma tag se comporta de outro jeito.