MobileDetect, what's that?

MobileDetect is a free API allowing you to identify a mobile phone and download its technical features in real time. With this information at hand you can build your mobile pages dynamically in a way that will ensure your mobile pages to work on all mobile phones.

MobileDetect basically acts as a relay between you and your visitor, you push the UAprof or User Agent of your visitor to MobileDetect and you get all kinds of data in return: screen resolution, type of browser, audio/video formats, ... MobileDetect has detailed specifications of more than 4000 mobile phones so you don't need to worry about building your own database, MobileDetect keeps the pace with the market for you.

MobileDetect is being used by thousands of mobile visitors every month since december 2007 and whenever a new and unknown phone is detected, it is automatically added to the database in the next 24h. If you are worried about latency or if you think you are going to generate a lot of trafic, you might be interested by purchasing the database and exporting it on your own servers. Check the "purchase" button in the main menu.

Not yet convinced ? Try it out, it's free

If you want a ready to use script, you can download the MobileMultimedia Free WAP toolkit.

MobileDetect, how does it work?

MobileDetect is very easy to use, you don't need to be a guru to start using it, basic programming skills should be allright. MobileDetect is an API where you need to push some data about the phone visiting your page, you then get data to parse in return.

Here is what you need to do to start using MobileDetect
- Register to MobileMultimedia to get a login and password (it's free)
- Catch the following HTTP header from your mobile visitors: HTTP_USER_AGENT, HTTP_X_WAP_PROFILE and HTTP_ACCEPT (don't send your server headers!)
- Buil a POST request and send it to ttp://www.mobilemultimedia.be/api/mobiledetect.php
- Send the following variables to the API: uag (HTTP_USER_AGENT), uap (HTTP_X_WAP_PROFILE), acc (HTTP_ACCEPT), login, password, email
- Parse the data you get in return


There are many different methods you can use to connect to MobileDetect but if you're using PHP and you need code sample, have a look at the following script:

// ---------------------------------------
// API url:
// ---------------------------------------
$url="http://www.mobilemultimedia.be/api/mobiledetect.php";
// ---------------------------------------
// Catch the required HTTP from the phone headers
// ---------------------------------------
$user_agent=$_SERVER['HTTP_USER_AGENT'];
$uaprof=$_SERVER['HTTP_X_WAP_PROFILE'];
$accept=$_SERVER['HTTP_ACCEPT'];
// ---------------------------------------
// Member information
// fill in your credentials and e-mail addres
// ---------------------------------------
$login="your login";
$password="your password";
$email="your e-mail";
// ---------------------------------------
// Create a POST request with cURL (check if your PHP version supports it)
// ---------------------------------------
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
// Separate the parameters with &
curl_setopt($ch, CURLOPT_POSTFIELDS,"login=$login&password=$password&uag=$user_agent
&uap=$uaprof&acc=$accept&email=$email");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// ob_start & ob_end are preventing the script to display something on your visitor's screen
ob_start();
$result= curl_exec ($ch);
// The data you get in return is stored in the $content variable
$content = curl_multi_getcontent ($ch);
ob_end_clean();
curl_close ($ch);


At this stage you only need to parse the data you've received. Have a look at the example here below to understand what to do with this data.
Don't forget to send HTTP headers sent from the phone and not the ones sent from your server, this is a very common mistake.

In return of your POST request you will receive a text string like the following one:

brand::Samsung##model::Z630##browser::NetFront##browserversion::3.3## resolution::240x320##xhtmlversion::1.0##htmlversion::4.0##wapversion::2.0 ##javaplatform::CLDC1.1##accept_types::text/vnd.wap.wml,text/xml, application/vnd.wap.wmlc,application/vnd.wap. wbxml,application/vnd.wap. wmlscriptc,application/vnd.wap.xhtml+xml,text/html,text/plain,text/css, application/wml+xml,application/xhtml+ xml,multipart/mixed,application/vnd. wap.multipart.mixed,image/vnd.wap.wbmp,image/gif,image/jpeg,image/png, image/bmp,image/jpg, audio/midi,audio/mid,audio/x-midi,audio/sp-midi,audio/ mmf,audio/x-iMelody,audio/iMelody,audio/amr,audio/x-amr,application/vnd.smaf, application/x-smaf,text/x-iMelody,audio/mpeg4,audio/mp4,audio/3gpp,audio/wav ,audio/x-wav,video/h263,video/mpeg,video/x-vp-mp4, video/3gpp,video/3gp, video/mpeg4,video/mp4,video/x-mp4,application/sdp,application/vnd.oma.dd+xml, text/vnd.sun.j2me.app-descriptor,application/vnd.oma.drm.message,application/ vnd.oma.drm.content,application/vnd.oma.drm.rights+xml,application/vnd.oma.drm. rights+ wbxml,text/vnd.wap.connectivity-xml,application/vnd.wap.connectivity-wbxml## login::Login and Password ok##UAprof::UAprof found, downloading data##status::Detection done##

As you can see, every element is separated with ## and every element contains a label and a value separated with ::
You will need to parse this text string to obtain labels and their respective values in order to use them in your code.

Example:
resolution:: 240x320
=> indicates the screen resolution (width x height) separated with a x


Let's have a look at the other variable labels:
brand: text string with all brands available on this site
model: text string with all models available on this site
browser: text string with all browser brands available (netfront,obigo,...)
browserversion: software version for every browser
resolution: width x height
wapversion: usually 1.x (WML browsers) and 2.x (xHTML browsers)
xhtmlversion: empty (1458) ,XHTML-Basic/1.0 (2) 1.0 (1354) 1.0,1.0 (2) 1.1 (664) 1.1,1.1 (13) 1.2 (9) 1.2.1 (15) 2 (1) 2.0 (223) basic 1.0 (7) L-Basic/1.0 (1) XHTML Mobile Profile (1) XHTML-Basic/1.0 (88) XHTML-Basic/1.1 (7) XHTML-Mobile11 (1) XHTML-MP (2)
htmlversion: empty (2233) 4.0 (1) 1.0 (41) 2.0 (4) 3.2 (46) 4 (3) 4.0 (688) 4.0.1 (94) 4.01 (404) 4.01,4.01 (13) 4.1 (219) i-mode HTML 3.0 (2) N/a (6) None (94)
javaplatform: text strings with all available java platform, there are hundreds of them.
accept_types: all accept/mime types you may imagine
You will also receive a couple of indicators after those variables indicating if any problem occured during the transaction and where the problem occurred (login, uaprof, ...)

Which variables should you absolutely use ?
Screen size and wapversion are definitely the most important ones to start with. With those two variables you can already create handset groups like the following ones:
Old handsets (WML only): wapversion = 1.x and screen width<128px
Low end xHTML: wapversion = 2.x and screen width<128px
Mid end xHTML: wapversion = 2.x and screen width between 150 and 240px
High end xHTML: wapversion = 2.x and screen width above 240px


Depending on your priorities and objectives, you may want to go beyond the use of those two variables. The best detection should then be based on the browsername and version, this would allow you to create a page set for every possible browser and make sure those pages are working fine for all of them. This process is tedious but will allow you to build the perfect mobile rendering engine.


Compare Nokia mobile phone prices

Check out the best phone deals from major US shops here below.
Available brands are:
Nokia phones prices, Sony Ericsson phones prices, HTC prices, Apple iPhone prices, Blackberry phones prices, Samsung phones prices, LG phone prices


Nokia E63 Cell Phone

Nokia E63 Cell Phone
the Nokia E63, designed for people who need to manage their business a...

Price: 180.00 - 248.00 US$ (+ transport)
Price Nokia E63 Cell Phone

Nokia E71 Cell Phone

Nokia E71 Cell Phone
The Nokia E71 is optimized for messaging and e-mail with a full messag...

Price: 11.00 - 348.00 US$ (+ transport)
Price Nokia E71 Cell Phone

Nokia 2610 Cell Phone

Nokia 2610 Cell Phone
While some people may be fumbling over their €œsmart€ phones, s...

Price: 5.00 - 30.00 US$ (+ transport)
Price Nokia 2610 Cell Phone

Nokia E72 Smartphone

Nokia E72 Smartphone
The E72 develops on the huge success and popularity its predecessor, t...

Price: 330.00 - 466.00 US$ (+ transport)
Price Nokia E72 Smartphone

Nokia 2720 Fold Cell Phone

Nokia 2720 Fold Cell Phone
The Nokia 2720 is an affordable flip phone with sleek, modern looks. T...

Price: 10.00 - 80.00 US$ (+ transport)
Price Nokia 2720 Fold Cell Phone

Nokia X3 Cell Phone

Nokia X3 Cell Phone
The Nokia X3 is a sleek slide phone with dedicated music and volume ke...

Price: 125.00 - 202.00 US$ (+ transport)
Price Nokia X3 Cell Phone

Nokia N97 (32 GB) Cell Phone

Nokia N97 (32 GB) Cell Phone
The N97 enters the fray stomaching 32GB of on-board storage , and can ...

Price: 430.00 - 645.00 US$ (+ transport)
Price Nokia N97 (32 GB) Cell Phone

Nokia 7020 Cell Phone

Nokia 7020 Cell Phone
The Nokia unlocked 7020 is a stylish fold device featuring an illumina...

Price: 90.00 - 125.00 US$ (+ transport)
Price Nokia 7020 Cell Phone

Nokia XpressMusic 5800 Smartphone

Nokia XpressMusic 5800 Smartphone
When it comes to music phones, people all over the world want a device...

Price: 248.00 - 350.00 US$ (+ transport)
Price Nokia XpressMusic 5800 Smartphone

Nokia 5230 Cell Phone

Nokia 5230 Cell Phone
The Nokia 5230 is a stylish handset that features a touch-sensitive wi...

Price: 0.00 - 209.00 US$ (+ transport)
Price Nokia 5230 Cell Phone

Nokia N97 mini (8 GB) Smartphone

Nokia N97 mini (8 GB) Smartphone
The sleek Nokia N97 mini integrates the web into your life and seamles...

Price: 370.00 - 447.00 US$ (+ transport)
Price Nokia N97 mini (8 GB) Smartphone

Nokia N96 (16 GB) Cell Phone

Nokia N96 (16 GB) Cell Phone
The Nokia N96 is a GSM/WCDMA dual mode portable multimedia computer su...

Price: 475.00 - 721.00 US$ (+ transport)
Price Nokia N96 (16 GB) Cell Phone


Related keywords:


Last mobile visitors seen on MobileDetect

2010-09-03 - 18:29:36: SAMSUNG-SGH-X650/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3....
2010-09-03 - 17:59:48: SonyEricssonS500i/R8BE Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-...
2010-09-03 - 17:44:26: SAMSUNG-GT-M5650/M5650XXIL3 SHP/VPP/R5 Jasmine/1.0 Qtv5.3 SMM-MMS/1.2.0 profile/...
2010-09-03 - 17:18:34: Nokia2700c-2/2.0 (07.80) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 16:51:43: SAMSUNG-SGH-F480/F480XXHL3 SHP/VPP/R5 NetFront/3.4 Qtv5.3 SMM-MMS/1.2.0 profile/...
2010-09-03 - 16:47:42: SonyEricssonW508/R1EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1...
2010-09-03 - 15:50:58: Nokia5200/2.0 (05.51) Profile/MIDP-2.0 Configuration/CLDC-1.1...
2010-09-03 - 15:38:29: SonyEricssonW508/R1EA Browser/NetFront/3.4 Profile/MIDP-2.1 Configuration/CLDC-1...
2010-09-03 - 15:04:49: Nokia1680c-2/2.0 (07.60) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 14:09:13: LG-KP500-Orange/V10i Teleca/WAP2.0 MIDP-2.0/CLDC-1.1...
2010-09-03 - 14:08:55: LG-KP500-Orange/V10i Teleca/WAP2.0 MIDP-2.0/CLDC-1.1...
2010-09-03 - 12:41:49: SAMSUNG-SGH-F480/F480XXHL3 SHP/VPP/R5 NetFront/3.4 Qtv5.3 SMM-MMS/1.2.0 profile/...
2010-09-03 - 12:39:38: SAMSUNG-C3050-ORANGE/C3050BVID1 Openwave/6.2.3 Profile/MIDP-2.0 Configuration/CL...
2010-09-03 - 12:27:41: Nokia2700c-2/2.0 (07.80) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 12:13:48: LG-KP500-Orange/V10i Teleca/WAP2.0 MIDP-2.0/CLDC-1.1...
2010-09-03 - 12:13:06: SonyEricssonW380i/R9BB Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-...
2010-09-03 - 12:12:52: LG-KP500-Orange/V10i Teleca/WAP2.0 MIDP-2.0/CLDC-1.1...
2010-09-03 - 12:09:49: SAMSUNG-GT-S3650-ORANGE/S3650BVII6 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1....
2010-09-03 - 12:05:02: SAMSUNG-GT-S3650-ORANGE/S3650BVII6 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1....
2010-09-03 - 12:05:01: SAMSUNG-GT-S3650-ORANGE/S3650BVII6 SHP/VPP/R5 Jasmine/1.0 Nextreaming SMM-MMS/1....
2010-09-03 - 11:54:23: SAMSUNG-SGH-F480/F480XXHL3 SHP/VPP/R5 NetFront/3.4 Qtv5.3 SMM-MMS/1.2.0 profile/...
2010-09-03 - 11:47:49: Nokia3120classic/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 11:18:39: SAMSUNG-SGH-X650/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3....
2010-09-03 - 11:14:17: SAMSUNG-SGH-X650/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3....
2010-09-03 - 11:13:47: Nokia3120classic/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 10:57:20: Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5800d-1/50.0.005; Profile/MIDP-2.1...
2010-09-03 - 10:49:59: SAMSUNG-SGH-M110/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3....
2010-09-03 - 10:49:33: SAMSUNG-SGH-M110/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3....
2010-09-03 - 10:37:09: SonyEricssonU10i/R7AA Browser/NetFront/3.5 Profile/MIDP-2.1 Configuration/CLDC-1...
2010-09-03 - 10:13:17: Nokia3120classic/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 10:13:07: Nokia3120classic/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 09:56:36: Nokia3120classic/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 09:53:43: Nokia3120classic/2.0 (06.20) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 09:30:48: Nokia3600slide/2.0 (04.86) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 09:29:40: Nokia3600slide/2.0 (04.86) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 09:29:02: Nokia3120classic/2.0 (10.00) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 09:21:39: Nokia2700c-2/2.0 (07.80) Profile/MIDP-2.1 Configuration/CLDC-1.1...
2010-09-03 - 08:34:05: SAMSUNG-SGH-F480/F480XXHL3 SHP/VPP/R5 NetFront/3.4 Qtv5.3 SMM-MMS/1.2.0 profile/...
2010-09-03 - 08:33:52: SAMSUNG-SGH-F480/F480XXHL3 SHP/VPP/R5 NetFront/3.4 Qtv5.3 SMM-MMS/1.2.0 profile/...
2010-09-03 - 08:31:55: SonyEricssonF305/R1DA Browser/OpenWave/1.0 Profile/MIDP-2.1 Configuration/CLDC-1...