HeadlinesBriefing favicon HeadlinesBriefing.com

Códigos QR redirigen a tienda adecuada

Hacker News •
×

Cuando anuncié Poker Nexus a principios de esta semana, mencioné de paso que despliega "un host de enlaces cortos separado para enlaces impresos". Esta publicación cubre qué hace ese host y por qué está construido de esa manera. El objetivo era simple. Quería tarjetas de presentación con un código QR en la parte posterior que diga "Descargar". El problema es que un código QR codifica exactamente una URL, mientras que "descargar la aplicación" significa tres lugares diferentes dependiendo de quién lo escanee: un iPhone debe aterrizar en la lista de la App Store, un teléfono Android en la lista de Google Play, y todo lo demás (una laptop, un rastreador, un dispositivo que no puedo identificar) debe aterrizar en el sitio web. Las tarjetas impresas tampoco se pueden actualizar una vez que están en la billetera de alguien, por lo que la URL en ellas debe seguir funcionando incluso si los destinos cambian más tarde. Ambos problemas apuntan a la misma respuesta: imprimir una URL que controlo, y dejar que el servidor decida a dónde va cada solicitud. Las tarjetas apuntan a `https://go.pokernexus.com/app`.

Hice el código QR con mi Generador de Códigos QR. Se ejecuta completamente en el navegador y exporta un SVG o PNG simple, que es lo que quiere una imprenta. Una URL corta produce un código menos denso, y un código menos denso tiene módulos más grandes que se escanean de manera más confiable en el tamaño de una tarjeta de presentación. `go.pokernexus.com/app` es lo suficientemente corto para mantenerse en una versión QR baja. Poner un logotipo en el medio cubre algunos de los módulos, por lo que el código tiene que apoyarse en la corrección de errores para compensarlos. El generador eleva el nivel a H (aproximadamente 30% recuperable) tan pronto como se agrega un ícono central, lo que permitió que el club Poker Nexus se sentara en el medio sin romper los escaneos.

El host es servido por una pequeña aplicación Hono independiente. Cada lugar al que puede enviar a alguien se describe como un `Destination`: una URL, más una bandera que indica si la cadena de consulta entrante debe copiarse en ella. La tabla de enrutamiento mapea cada ruta a un `Target`, que es un `Destination` fijo o una función que elige uno basado en la solicitud. La decisión se toma únicamente en el encabezado `User-Agent`. Cada rama que no es una coincidencia segura cae al sitio web. Esa asimetría es intencional. Una respuesta incorrecta que aterriza en el sitio web sigue siendo una página funcional, mientras que una respuesta incorrecta que aterriza en una tienda es un aviso de instalación para un dispositivo que no puede ejecutar la aplicación.

El orden de esas comprobaciones es fácil de pasar por alto. Los rastreadores de teléfonos inteligentes de Google se identifican como teléfonos y agregan su propio nombre, por lo que el agente de usuario del rastreador de Android contiene `Android` y el de iOS contiene `iPhone`. Los bots se verifican primero para asegurarse de que aterricen en el sitio web, no en la tienda.

Entidades clave: Empresas: Poker Nexus, Google, Apple