Detect IPhone, IPod, BlackBerry...Tag(s): Mobile
Using Javascript
if((navigator.userAgent.match(/iPhone/i)) ||
(navigator.userAgent.match(/iPod/i))) {
window.location = "http://www.rgagnon.com/howto.html&mobile=1";
}
if((navigator.userAgent.match(/iPhone/i)) ||
(navigator.userAgent.match(/iPod/i))) {
if (document.cookie.indexOf("mobile_redirect=false") == -1) {
window.location = "http://www.rgagnon.com/howto.html?mobile=1";
}
}
Using PHP
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||
strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
{
header('Location: http://www.rgagnon.com/howto.html?mobile=1');
exit();
}
Using Apache .htaccess
#redirect mobile browsers
RewriteCond %{HTTP_USER_AGENT} ^.*iPhone.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*iPod.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*BlackBerry.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*Palm.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
These tips examine the HTTP_USER_AGENT to check the current device. It is easy to detect a particuliar device with a simple Javascript function.
function isiPad(){
return (navigator.platform.indexOf("iPad") != -1);
}
The same principle can be applied to Android detection. Typical Android HTTP-Agent looks like :
Mozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2 – G1 Phone Mozilla/5.0 (Linux; U; Android 1.0; en-us; generic) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2 – Emulator Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 –Nexus Mozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3
function isAndroid(){
return (navigator.platform.indexOf("Android") != -1);
}
List of Mobile Phone User Agents : http://www.mobile-phone-specs.com/user-agent-browser/0/
It's is hard to keep up with all the devices since you don't want to support only the Apple devices.
Another way to use use a special CSS for mobile devices.
<link media="only screen and (max-device-width: 480px)"
href="small-device.css" type= "text/css"
rel="stylesheet">
<link media="screen and (min-device-width: 481px)"
href="not-small-device.css" type="text/css"
rel="stylesheet">
<!--[if IE]>
<link media="all"
href="explorer.css" type="text/css"
rel="stylesheet" />
<![endif]-->
It's always possible to specify in page some styles for the mobile device (without a CSS).
@media screen and (max-device-width: 480px) { ... }
The media="only screen.." is specific to Apple, to detect other mobile devices use the standard media handheld.
<link media="handheld, only screen and (max-device-width: 480px)"
href="howtomobile.css" type= "text/css"
rel="stylesheet"/>
Since IPhone/Ipod 4G have a better resolution, use this detection instead.
<link rel="stylesheet"
media="only screen and (-webkit-min-device-pixel-ratio: 2)"
type="text/css"
href="howtomobile.css" />
Beware ... the result is not very good the CSS technique, some desktop browsers are not choosing
the right CSS. This part needs more research!
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com