HeadlinesBriefing favicon HeadlinesBriefing.com

QRコードで適切なアプリストアへ

Hacker News •
×

今週初めにPoker Nexusを発表した際、私は「印刷されたリンク用の別のショートリンクホスト」を展開していると簡単に触れました。この投稿では、そのホストが何をするのか、なぜそのように構築されているのかを説明します。目標はシンプルでした。「ダウンロード」と書かれたQRコードを裏面に持つ名刺が欲しかったのです。問題は、QRコードは正確に1つのURLをエンコードするのに対し、「アプリをダウンロード」は誰がスキャンするかによって3つの異なる場所を意味することです。iPhoneはApp Storeのリストに、AndroidフォンはGoogle Playのリストに、その他(ラップトップ、クローラ、識別できないデバイス)はウェブサイトに着地する必要があります。印刷されたカードは誰かの財布に入った後は更新できないため、カード上のURLは後で宛先が変更されても機能し続ける必要があります。両方の問題は同じ答えを指しています。私が制御するURLを印刷し、サーバーに各リクエストの行き先を決定させることです。カードは`https://go.pokernexus.com/app`を指しています。

QRコード自体は私のQRコードジェネレーターで作成しました。ブラウザ内で完全に動作し、印刷会社が求めるプレーンなSVGまたはPNGをエクスポートします。短いURLは密度の低いコードを生成し、密度の低いコードは名刺サイズでより確実にスキャンできる大きなモジュールを持ちます。`go.pokernexus.com/app`は低いQRバージョンを維持するのに十分短いです。中央にロゴを配置すると一部のモジュールが覆われるため、コードはエラー訂正に頼ってそれらを補う必要があります。ジェネレーターは中央アイコンが追加されるとすぐにレベルをH(約30%回復可能)に引き上げ、これによりPoker Nexusクラブがスキャンを壊すことなく中央に配置できるようになりました。

ホストは小さなスタンドアロンのHonoアプリによって提供されます。誰かを送信できるすべての場所は`Destination`として記述されます。URLと、受信したクエリ文字列をコピーするかどうかを示すフラグです。ルーティングテーブルは各パスを`Target`にマッピングします。`Target`は固定の`Destination`か、リクエストに基づいて選択する関数です。決定は`User-Agent`ヘッダーのみに基づいて行われます。確信のある一致ではないすべてのブランチはウェブサイトにフォールスルーします。この非対称性は意図的です。ウェブサイトに着地する間違った答えはまだ機能するページですが、ストアに着地する間違った答えはアプリを実行できないデバイスへのインストールプロンプトです。

これらのチェックの順序は見落としがちです。Googleのスマートフォンクローラーは電話として識別され、独自の名前を追加するため、Androidクローラーのユーザーエージェントには`Android`が含まれ、iOSのものには`iPhone`が含まれます。ボットは最初にチェックされ、ストアではなくウェブサイトに着地するようにします。

主要エンティティ:企業:Poker Nexus、Google、Apple