Server-side, you can check the content of the user-agent
header:
// Match user agent string with operating systems
Windows 3.11 => Win16,
Windows 95 => (Windows 95)|(Win95)|(Windows_95),
Windows 98 => (Windows 98)|(Win98),
Windows 2000 => (Windows NT 5.0)|(Windows 2000),
Windows XP => (Windows NT 5.1)|(Windows XP),
Windows Server 2003 => (Windows NT 5.2),
Windows Vista => (Windows NT 6.0),
Windows 7 => (Windows NT 6.1),
Windows 8 => (Windows NT 6.2),
Windows NT 4.0 => (Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT),
Windows ME => Windows ME,
Open BSD => OpenBSD,
Sun OS => SunOS,
Linux => (Linux)|(X11),
Mac OS => (Mac_PowerPC)|(Macintosh),
QNX => QNX,
BeOS => BeOS,
OS/2 => OS/2,
Search Bot=>(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)
( source )
Via JavaScript, the same can be done by checking the partial content of navigator.appVersion
:
if (navigator.appVersion.indexOf("Win")!=-1) //Windows
You can then decide which store to use with a snippet like this:
var playStoreUrl = "http://www.play.google.com/",
appStoreUrl = "http://www.itunes.com/myapp",
platform = navigator.platform;
if (/mac/i.test(platform))
$("#redirect").attr("href", appStoreUrl);
else if (/linux/i.test(platform))
$("#redirect").attr("href", playStoreUrl);
else
// Handle the case where the OS is neither MacOS nor Linux
( source )