2011-08-19 36 views
16

Estoy empezando a crear mi primera versión móvil de un sitio web de escritorio que se escribió en WebForms.Detección de dispositivo de navegador móvil en .NET

Mi pregunta actual tiene que ver con la detección de dispositivo móvil/navegador.

Lo que estoy tratando de determinar es a) Si su dispositivo es móvil b) ¿Qué sistema operativo (Android/IOS/etc) en caso de que necesite manejar algo diferente basado en el sistema operativo y c) ¿Qué tamaño de pantalla (para cargando diferentes hojas de estilos)

+0

¿No encontró respuesta? Tengo la misma pregunta ... ¿qué decidieron como solución? –

+1

eche un vistazo a esta pregunta/respuesta: http://stackoverflow.com/questions/9587111/mobile-site-detection-server-side-vs-client-side – avs099

+0

Utilice la biblioteca de detección móvil 'Detección de auricular' http://www.handsetdetection.com
puede obtener el kit de API de detección de dispositivos .NET visitando el siguiente enlace:
http://code.google.com/p/handset-detection-asp-net-api-kit/

Respuesta

4

No necesariamente creo que lo que propongo es la mejor solución en muchos casos, sin embargo, puede ser una visión alternativa de su área problemática.

En lugar de detectar un navegador móvil per se, que tiene algunas similitudes/desventajas con el rastreo del navegador.

En su lugar, adopte el enfoque del diseño receptivo. No entraré en detalles sobre el diseño receptivo aquí, ya que nos está desviando del camino. Sin embargo, lo que podría proporcionarle es un enfoque que en lugar de personalizar toda la experiencia según el navegador detectado, es un método más sutil de personalizar la experiencia en base a resoluciones de pantalla, capacidades CSS, JavaScript habilitado, etc.

El diseño receptivo no es una tecnología, sino un conjunto de técnicas que permiten que la experiencia se mejore progresivamente dependiendo del navegador (navegador móvil) que se utilice.

Lo que una técnica receptiva realmente no permite (o al menos está comprometida) es diferencias muy dramáticas entre, por ejemplo, versión móvil/versión de escritorio. Como cada uno típicamente contaminaría la experiencia por separado, p. html podría estar oculto en una versión móvil, pero aún podría descargarse en segundo plano ... pero estas técnicas se están desarrollando, p. JavaScript se puede utilizar para descargar una imagen de baja resolución en un navegador móvil y una alta resolución en un monitor de pantalla ancha.

Pero siempre se puede poner un enlace a una versión de escritorio/versión móvil completamente separada del sitio para permitir al usuario decidir como un retroceso.

+0

Gramática nazi aquí, es "per se", en latín significa "en sí mismo" http://en.wikipedia.org/wiki/Per_se –

+0

¡Gracias, acabo de corregir y corregir parte de mi terrible ortografía también! Debo haber tenido prisa. –

12

La detección del tipo de navegador es más simple al observar la cadena useragent. Las palabras clave en esa cadena ayudarán a detectar el navegador. UserAgentString.com mantiene una lista exhaustiva de cadenas de caracteres de uso, pero lo principal que debe buscar son solo unas pocas palabras clave.

Por ejemplo, la palabra "blackberry" solo aparece cuando se navega desde un dispositivo Blackberry. Similar con iPad y iPhone. Todos los dispositivos Android muestran "android" en la cadena de caracteres de useragent, pero distinguen entre tabletas y teléfonos mediante la inclusión de la palabra clave "mobile" para teléfonos.

He aquí cómo detectamos escritorios, teléfonos y tabletas en nuestra aplicación móvil:

public enum DeviceType 
    { 
     Desktop, 
     Tablet, 
     Phone 
    } 

    public static DeviceType UserAgentToDeviceType(string userAgent) 
    { 
     if (userAgent.ToLowerInvariant().Contains("blackberry")) 
      return DeviceType.Phone; 

     if (userAgent.ToLowerInvariant().Contains("iphone")) 
      return DeviceType.Phone; 

     if (userAgent.ToLowerInvariant().Contains("ipad")) 
      return DeviceType.Tablet; 

     if (userAgent.ToLowerInvariant().Contains("android")) 
     { 
      if (userAgent.ToLowerInvariant().Contains("mobile")) 
       return DeviceType.Phone; 
      else 
       return DeviceType.Tablet; 
     } 

     return DeviceType.Desktop; 
    } 

Si está utilizando algo así como jQuery Mobile, el sitio será personalizado para el aspecto móvil independientemente del tipo de dispositivo, y se manejar las diferencias entre el motor de JavaScript en diferentes dispositivos.

1

WURFL es un gran recurso para esto. Puede configurar qué valores necesita (no es necesario que tome todos sus argumentos). Creo que si se desea crear su propia Solución

1) Usted puede tomar WURFL XML 2) argumentos de favoritos según sus necesidades 3) Uso del lector XML para leer su xml y poner los valores en su base de datos.

De esta manera usted puede tener su propia solución. (aunque un problema es que los dispositivos nuevos que se registren más tarde en WURFL no se actualizarán automáticamente, por lo que deberá actualizarlo usted mismo más adelante)

Cuestiones relacionadas