HeadlinesBriefing favicon HeadlinesBriefing.com

Códigos QR roteiam para loja apropriada

Hacker News •
×

Quando anunciei o Poker Nexus no início desta semana, mencionei de passagem que ele implanta "um host de link curto separado para links impressos". Este post cobre o que esse host faz e por que é construído dessa forma. O objetivo era simples. Eu queria cartões de visita com um código QR na parte de trás dizendo "Baixar". O problema é que um código QR codifica exatamente uma URL, enquanto "baixar o aplicativo" significa três lugares diferentes dependendo de quem o escaneia: um iPhone deve cair na listagem da App Store, um telefone Android na listagem do Google Play, e todo o resto (um laptop, um rastreador, um dispositivo que não consigo identificar) deve cair no site. Cartões impressos também não podem ser atualizados depois que estão na carteira de alguém, então a URL neles precisa continuar funcionando mesmo que os destinos mudem depois. Ambos os problemas apontam para a mesma resposta: imprimir uma URL que eu controlo, e deixar o servidor decidir para onde cada requisição vai. Os cartões apontam para `https://go.pokernexus.com/app`.

Eu fiz o próprio código QR com meu Gerador de Códigos QR. Ele roda inteiramente no navegador e exporta um SVG ou PNG simples, que é o que uma gráfica quer. Uma URL curta produz um código menos denso, e um código menos denso tem módulos maiores que escaneiam de forma mais confiável no tamanho de um cartão de visita. `go.pokernexus.com/app` é curto o suficiente para permanecer em uma versão QR baixa. Colocar um logotipo no meio cobre alguns dos módulos, então o código tem que contar com a correção de erros para compensá-los. O gerador eleva o nível para H (aproximadamente 30% recuperável) assim que um ícone central é adicionado, o que permitiu que o clube Poker Nexus ficasse no meio sem quebrar as leituras.

O host é servido por um pequeno aplicativo Hono independente. Cada lugar para onde pode enviar alguém é descrito como um `Destination`: uma URL, mais uma flag que indica se a string de consulta recebida deve ser copiada para ela. A tabela de roteamento mapeia cada caminho para um `Target`, que é um `Destination` fixo ou uma função que escolhe um com base na requisição. A decisão é tomada apenas no cabeçalho `User-Agent`. Cada ramo que não é uma correspondência confiante cai no site. Essa assimetria é intencional. Uma resposta errada que cai no site ainda é uma página funcional, enquanto uma resposta errada que cai em uma loja é um prompt de instalação para um dispositivo que não pode executar o aplicativo.

A ordem dessas verificações é fácil de ignorar. Os rastreadores de smartphones do Google se identificam como telefones e anexam seu próprio nome, então o agente do usuário do rastreador Android contém `Android` e o do iOS contém `iPhone`. Os bots são verificados primeiro para garantir que caiam no site, não na loja.

Entidades-chave: Empresas: Poker Nexus, Google, Apple