HeadlinesBriefing favicon HeadlinesBriefing.com

Codes QR vers boutique appropriée

Hacker News •
×

Lorsque j'ai annoncé Poker Nexus plus tôt cette semaine, j'ai mentionné en passant qu'il déploie "un hôte de lien court séparé pour les liens imprimés". Cet article explique ce que fait cet hôte et pourquoi il est construit de cette façon. L'objectif était simple. Je voulais des cartes de visite avec un code QR au dos indiquant "Télécharger". Le problème est qu'un code QR encode exactement une URL, tandis que "télécharger l'application" signifie trois endroits différents selon qui la scanne : un iPhone doit atterrir sur la fiche de l'App Store, un téléphone Android sur la fiche de Google Play, et tout le reste (un ordinateur portable, un robot d'exploration, un appareil que je ne peux pas identifier) doit atterrir sur le site web. Les cartes imprimées ne peuvent pas non plus être mises à jour une fois qu'elles sont dans le portefeuille de quelqu'un, donc l'URL sur elles doit continuer à fonctionner même si les destinations changent plus tard. Les deux problèmes pointent vers la même réponse : imprimer une URL que je contrôle, et laisser le serveur décider où va chaque requête. Les cartes pointent vers `https://go.pokernexus.com/app`.

J'ai fabriqué le code QR lui-même avec mon Générateur de Codes QR. Il fonctionne entièrement dans le navigateur et exporte un SVG ou PNG simple, ce qu'une imprimerie veut. Une URL courte produit un code moins dense, et un code moins dense a des modules plus grands qui scannent plus fiablement à la taille d'une carte de visite. `go.pokernexus.com/app` est assez court pour rester à une version QR basse. Mettre un logo au milieu couvre certains des modules, donc le code doit s'appuyer sur la correction d'erreurs pour les compenser. Le générateur élève le niveau à H (environ 30% récupérable) dès qu'une icône centrale est ajoutée, ce qui a permis au club Poker Nexus de se trouver au milieu sans casser les scans.

L'hôte est servi par une petite application Hono autonome. Chaque endroit où il peut envoyer quelqu'un est décrit comme une `Destination` : une URL, plus un indicateur qui dit si la chaîne de requête entrante doit y être copiée. La table de routage mappe chaque chemin à une `Target`, qui est soit une `Destination` fixe, soit une fonction qui en choisit une en fonction de la requête. La décision est prise uniquement sur l'en-tête `User-Agent`. Chaque branche qui n'est pas une correspondance certaine tombe sur le site web. Cette asymétrie est intentionnelle. Une réponse incorrecte qui atterrit sur le site web est toujours une page fonctionnelle, tandis qu'une réponse incorrecte qui atterrit dans une boutique est une invite d'installation pour un appareil qui ne peut pas exécuter l'application.

L'ordre de ces vérifications est facile à négliger. Les robots d'exploration de smartphones de Google s'identifient comme des téléphones et ajoutent leur propre nom, donc l'agent utilisateur du robot Android contient `Android` et celui d'iOS contient `iPhone`. Les bots sont vérifiés en premier pour s'assurer qu'ils atterrissent sur le site web, pas sur la boutique.

Entités clés : Entreprises : Poker Nexus, Google, Apple