miercuri, 27 mai 2009

Identificarea unui dispozitiv mobil in cazul aplicatiilor ASP.NET

In prezent, dispozitivele mobile de tip smartphone, pocketPC, palm sunt utilizate in mod frecvent pentru a naviga pe Internet. Acest lucru este permis de software, aplicaţiile browser pentru dispozitive mobile (Opera, Safari, Pocket Internet Explorer) si de capacitatea dispozitivului de a accesa o retea de date wireless sau una oferita de furnizorul de comunicatii mobile.

In acest scenariu, apare o problema privind dezvoltarea aplicatiilor Web, deoarece dispozitivul mobil este limitat in comparatie cu un PC sau Notebook din punctul de vedere al:

  • dimensiunilor fizice ale ecranului;
  • capacitatea de a afişa resurse multimedia (imagini, filme, sunet);
  • viteza de transfer a datelor
  • capacitatea de a rula script-uri.

Diferenţele enunţate influenţează negativ experienţa utilizatorului deoarece, in majoritatea cazurilor, aplicaţia este conceputa sa ruleze minim pe un ecran ce permite rezoluţia 800X600. Astfel, utilizatorul mobil întampină dificultati la vizualizarea meniului aplicatiei, a conţinutului si la completarea unor formulare de date.

Solutia problemei consta in dezvoltarea de versiuni diferite ale aplicaţiei Web. Utilizand tehnologia ASP.NET framework 2.0 si Visual Studio 2005

Cu toate că URL-ul site-ului Web rămâne neschimbat, trebuie să existe posibilitatea de a detecta tipul dispozitivului care face cererea ş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. Acesta 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. Această metodă analizează header-ul HTTP al cererii căutând informaţii despre platformă şi browser. Proprietatea intoarce true daca informaţiile gasite 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/

După cum se observă, 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

Utilizand emulatorul Windows Mobile 6 Professional (este disponibil pentru Visual Studio 2005 si 2008 descarcand Windows Mobile 6 Professional and Standard Software Development Kits de la adresa http://www.microsoft.com/downloads/en/default.aspx)

Mozilla/4.0(compatible; MSIE 6.0; Windows CE; IEMobile 6.12)

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:

Aceasta solutie poate fi utilizata si pentru dezvoltarea de aplicatii ASP.NET utilizand Visual Studio 2008. Diferentele dintre cele doua medii de dezvoltare sunt vizibile la abordarea continutului unei pagini ASP.NET destinata dispozitivelor mobile. Pentru Visual Studio 2005 exista conceptul ca browser-ele mobile au capacitati reduse, lucru adevarat la nivelul anilor 2004 – 2005. In prezent, aceste aplicatii au evoluat suficient de mult astfel incat sa fie capabile sa interpreteze continutul la fel ca un browser clasic, destinat PC-urilor.

Niciun comentariu:

Trimiteți un comentariu