A printed QR code holds exactly one URL, but a phone that scans it should land in the right app store. Here's the small redirect service behind the PokerNexus business cards: how it picks the App Store, Google Play, or…

20 points•matthuggins•6 days ago•10 comments•

10 comments

classictraffic6 days ago
I agree with the other commenters that this is a pretty simple engineering problem, but I still enjoyed reading about edge cases the author worked to address (they could have taken the easy road with this but tried not to). I forgot that Safari on iPad doesn't specify iPad in user agent headers
elendilm6 days ago
For our apps Slyp and SlypBusiness, we had the same QR code for each app open Playstore/Appstore page of the app depending on the phone. Hopefully, we will start rolling out Slyp next week.

Just have a branded link (like https://slyp.app/Slyp or https://slyp.app/SlypBusiness) to the official web page and have the js in that page auto-redirect and open the original Playstore/Appstore page.

And yes, we used userAgent for identifying the platform.

If anyone is interested, here is the code. May not cover all edge cases but works for our usecase. The code was wrung together in a hurry a year ago.

    window.addEventListener('DOMContentLoaded', (event) => {
        let app = 'Slyp'

        var userAgent = navigator.userAgent.toLowerCase();
        if (userAgent.indexOf('android') > -1) {
          window.location.href = `https://play.google.com/store/apps/details?id=com.ndcurve.${app}`;
        } else if (userAgent.indexOf('iphone') > -1 || userAgent.indexOf('ipod') > -1 || userAgent.indexOf('ipad') > -1 || userAgent.indexOf('mac') > -1) {
              if (app === "Slyp")
                window.location.href = 'https://apps.apple.com/app/<app_id>';
              else if (app === "SlypBusiness")
                window.location.href = 'https://apps.apple.com/app/<app_id>';
              else
                window.location.href = 'https://slyp.app';
        } else {
          window.location.href = `https://play.google.com/store/apps/details?id=com.ndcurve.${app}`;
        }
    });
Tiberium6 days ago
Is this a whole blog post for a simple backend that just routes based on the User-Agent?
ericpauley6 days ago
Believe it or not there are entire companies that are (to simplify, of course) just that: https://www.adjust.com/
matthuggins6 days ago
Yep, that's what it is.
m4tthumphrey6 days ago
Err wut... redirecting based on user agents?
arccy6 days ago
it's just a server side redirect based on the user agent headers

Read the full thread on Hacker News →

Related stories