Welcome to Idea R | Branding - Web Agency - Digital Strategies
Switch to the mobile layout

      Idea R - Do you have a real web strategy? Persuasion Technologies

Blog

Take a software geek from the 80s, add a new generation graphic designer and dilute with a longtime marketing strategist. Shake vigorously and you'll get the Idea R's blog.

Change language... italiano

3 methods to detect mobile devices in ASP.NET

Published on 11/14/2012
Categories: Web Design
3 methods to detect mobile devices in ASP.NET

Redirecting mobile visitors to the mobile version of your site, is a common task.
How to detect them in ASP.NET?

Solution 1: the native ASP.NET method

The HttpBrowserCapabilitiesBase class exposes the IsMobileDevice property, that seems to be the solution to our problem.
Unfortunately the property returns highly inaccurate values, due to the very basic parsing of the browser user agent.

Solution 2: 51Degrees.mobi

This open source library does a good job, you can install it using NuGet or directly from the 51Degrees project site.
When you install this free component, it comes along with with a data file that contains all the detailed user agents information of all the mobile phones in the market.
The only thing you have to do, is to periodically refresh this data file.

From a programmers prospective, you can configure an automatic redirection directly using configuration parameters in your config file, or you can manually test the extended HttpBrowserCapabilitiesBase.IsMobileDevice property that now return accurate results.

But there's a problem!

If you have to distinguish between smartphones and tablets, with this solution you can't or better, you can if you switch to the premium paid version.

Until 51Degrees version 1.x this was possible because the component was based on the WURFL database (Wireless Universal Resource FiLe), but with the new 2.x versions this changed as stated inside the official documentation:

The detection element replaces the wurfl element used in previous versions of the Foundation (v0.x, v1.x). Due to licencing changes from ScientiaMobile, the 51Degrees.mobi Foundation no longer supports WURFL data and instead uses 51Degrees.mobi Device Data.

Solution 3: WURFL

WURFL (Wireless Universal Resource FiLe) is deployed by key Internet companies such as Facebook and Google and it is the most used solution worldwide.
It can be easily included in your project using NuGet, but it has not a drag'n'drop implementation like 51Degrees, you have to code a little bit.

It is a two step process. First load the devices database and cache it for future use (you can do this in the Application_Start method).

using WURFL;
using WURFL.Aspnet.Extensions.Config;

...

// Try to load the WURFL manager from the cache
IWURFLManager wurflManager = (IWURFLManager)HttpContext.Current.Cache[WurflManagerCacheKey];
if (wurflManager == null)
{
    ApplicationConfigurer configurer = new ApplicationConfigurer();
    wurflManager = WURFLManagerBuilder.Build(configurer);
    // ...store the data file in the cache
    HttpContext.Current.Cache.Insert(WurflManagerCacheKey, wurflManager, null,
        DateTime.Now.AddMonths(1), Cache.NoSlidingExpiration);
}

When a page is requested the second step is to verify if the visitor is using a smartphone:

using WURFL;
using WURFL.Aspnet.Extensions.Config;

...

IDevice device = wurflManager.GetDeviceForRequest(Request.UserAgent);
// ...do not consider tablets as mobile devices (they have a wider display)
Boolean smartphone = String.Compare(device.GetCapability("is_wireless_device"), true.ToString(), true) == 0 && String.Compare(device.GetCapability("is_tablet"), false.ToString(), true) == 0;
if (smartphone)
    // ...redirect to the mobile version of your site

You are the reader number 8,453.

Comments

Previous article

Previous article

jQuery: how to throw and handle custom events

Next article

Infographic: the Social Media history

Next article

Scroll to top