Come funziona IsMobileDevice?

MSDN rende così facile rilevare un browser mobile:

if (Request.Browser["IsMobileDevice"] == "true" ) { Response.Redirect("MobileDefault.aspx"); } 

In realtà, sembra che tu possa semplicemente controllare Request.Browser.IsMobileDevice. Ma come funziona davvero? Non ho nemmeno un file .browser … cosa succede dietro le quinte qui? Esistono alcune impostazioni predefinite predefinite per ASP.NET 2.0?

Un certo numero di file * .browser vengono forniti con .NET:

 C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers 

Il runtime utilizza le espressioni regolari dai file * .browser per confrontarsi con la stringa User-Agent in entrata e quindi imposta un gruppo di proprietà in base a ciascuna corrispondenza trovata (nella gerarchia possono esserci diversi elementi).

Se hai bisogno di un supporto approfondito per dispositivi mobili, considera l’installazione di MDBF, che aggiunge il supporto per circa 400 dispositivi:

http://mdbf.codeplex.com/

Ora, dopo 4 anni, è ancora più semplice

 Request.Browser.IsMobileDevice 

Dal momento che per la maggior parte dei siti, le dimensioni dello schermo sono importanti e non tanto le capacità (almeno quando si parla di telefoni moderni con cose come Safari e Chrome su di esse) non sarebbe il controllo della risoluzione più sensata?

 Request.Browser.ScreenPixelsHeight 

e

 Request.Browser.ScreenPixelsWidth 

Non mi affiderei al collegamento MSDN, non esiste uno standard comune purtroppo per i browser mobili e molti cercano di imitare le loro controparti non mobili. Inoltre restituirà true se non riconosce. Vedi questo link .

La mia attuale comprensione è che c’è solo una soluzione esatta al problema di rilevare se un browser è mobile e successivamente rilevare le sue reali capacità. Questa soluzione è WURFL di ScientiaMobile (http://www.scientiamobile.com). Che, a partire dal 30 agosto, non è più gratuito per tutti gli usi. WURFL è ora rilasciato con un’API ASP.NET sotto AGPL. Il repository di dati viene fornito con una licenza specifica che non consente né la copia né l’utilizzo con API diverse da quella standard (a meno che non si acquisti una licenza commerciale).

Quindi per scopi pratici altri approcci come 51Degrees non possono essere utilizzati con versioni più recenti e future del repository WURFL e questo renderà difficile per 51Degrees rilevare nuovi dispositivi (Windows Phone 7.5, ad esempio).

Per quanto riguarda MDBF (un progetto dismesso), potrebbe ancora funzionare per rilevare se un dispositivo è mobile (molto meglio di IsMobileDevice in ASP.NET). Non è del tutto affidabile per quanto riguarda le proprietà del dispositivo. Insiste sul fatto che il mio HTC Desire Android abbia uno schermo 240×320, che è chiaramente errato.

La mia azienda ha acquistato una licenza WURFL e siamo assolutamente d’accordo.

I problemi sono stati risolti mentre aggiungevo 51 gradi, aggiungo solo 51 gradi usando Nuget. Vedi di più qui https://51degrees.codeplex.com