Identificarea unui dispozitiv (browser) mobil intr-un site Web

Acest material ofera o solutie pentru redirectarea cererii HTTP facuta de browser-ul unui dispozitiv mobil catre o versiune a site-ului destinata dispozitivelor cu caracteristici limitate (dimensiune, resurse multimedia).Soluţia problemei constă în dezvoltarea de versiuni diferite ale aplicaţiei Web sau sunt implementate rutine ce genereaza dinamic continut, utilizand tehnologia ASP.NET framework 2.0, 3.0, 3.5 si Visual Studio 2005 sau 2008.
Cu toate că URL-ul site-ului Web rămâne neschimbat, trebuie să existe posibilitatea de a detecta tipul dispozitivului care face cererea HTTP şi în funcţie de acesta de a-i furniza conţinut care să ţină cont de particularităţile acestuia.
Soluţia prezentată este implementată utilizând ASP.NET 2.0 si Visual Studio 2005 ca mediu de dezvoltare. Pentru testare se utilizeaza emulatoarele de dispozitive mobile puse la dispozitie de Visual Studio 2005. Acestea sunt iniţializate prin intermediul Device Emulator Manager […] din opţiunea Tools a mediului.

Identificarea tipului dispozitivului se realizeaza din pagina principală a site-ului analizând cererea HTTP făcută de browser-ul acestuia. In această zonă există informaţii care indică tipul aplicaţiei de tip browser. In situaţia identificării unui dispozitiv mobil, serverul va face o redirectare a cererii catre o pagina Web construită în mod explicit pentru dispozitive cu ecran de dimensiuni reduse si capacitate particulara de interpretare a unui formular.
Interogarea tipului dispozitivului se face în pagina principală a site-ului, în funcţia Page_Load prin intermediul obiectului HttpContext.Current.Request.Browser ce are proprietatea IsMobileDevice. Proprietatea intoarce true daca informaţiile gasite in cerere indica un dispozitiv mobil.

protected void Page_Load(object sender, EventArgs e)
{
 if(Request.Browser.IsMobileDevice)
  Server.Transfer(”MobileVersion/Default.aspx”);
}

Datorita numarului mare de dispozitive mobile si a evolutiei rapide a tehnologiei, metoda IsMobileDevice nu contine informatii despre toate dispozitivele mobile. Lista oficială a platformelor recunoscute se gaseste la http://www.asp.net/mobile/tested-devices/
Această listă nu este actualizată în mod curent, fapt care generează destul de uşor situaţii în care dispozitivul nu este identificat corect. In această situaţie este recomandată o abordare mai pragmatică ce implică definirea de metode proprii care să simuleze execuţia metodei IsMobileDevice.
Informaţiile ce pot fi analizate pentru a identifica platforma utilizatorului sunt obţinute prin intermediul metodei UserAgent pentru obiectul HttpContext.Current.Request.
De exemplu, pentru un telefon mobil Nokia N95, datele puse în cererea HTTP sunt

Mozilla/5.0(SymbianOS/9.2;U;Series60/3.1NokiaN95_8GB/15.0.015;Profile/MIDP-2.0Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413

Acest string poate fi parsat cu usurinta. Cea mai simpla metoda este data de cautarea unui substring dintr-o colectie data. In aceasta situatie metoda Page_Load devine

protected void Page_Load(object sender, EventArgs e)
{
 if(Request.Browser.IsMobileDevice)
  Server.Transfer(”MobileVersion/Default.aspx”);
 else
  if(Request.UserAgent.ToString().ToLower().Contains(“nokia”))
   Server.Transfer(”MobileVersion/Default.aspx”);
}

Aceste profile de dispozitive mobile pot fi inserate in Web.config sau in fisiere XML externe astfel incat sa fie gestionate fara a modifica codul aplicatiei. O solutie devoltata pentru a genera astfel de profile poate fi descarcata de la adresa http://www.asp.net/mobile/profile/default.aspx.

Pentru browser-ele de pe dispozitivele mobile ce nu accepta URL relative, de tipul MobileVersion/Default.aspx, redirectarea se va realiza dacă aplicaţia Web este configurată să genereze URL complet. Acest lucru se obţine prin modificarea fisierului Web.config, adăugand setarea:




Alte resurse despre acest subiect pot fi gasite la: