2008-09-26 10 views
56

Estamos empezando a recorrer el camino del soporte de navegador móvil para una aplicación web de comercio electrónico (basada en Java/Servlet). Por supuesto, hay muchas decisiones por tomar, pero me parece que la piedra angular es poder detectar de manera confiable los navegadores móviles y tomar las decisiones sobre el contenido que se devolverá en consecuencia. ¿Existe una forma estándar de hacer esta determinación (rápidamente) en función de la solicitud http, e idealmente obtener más información sobre el navegador y el dispositivo que realiza la solicitud (tamaño de pantalla, capacidades html, etc.?).Forma estándar para detectar navegadores móviles en una aplicación web basada en la solicitud http

También agradecería cualquier información complementaria que pudiera ser útil para alguien que ha tomado este camino de tomar una aplicación web de gran escala y diseñar arquitectónicamente la compatibilidad con navegadores móviles desde el lado del desarrollo.

[edit] Definitivamente entiendo el encabezado de la solicitud y la información acerca de una base de datos de agentes de usuario estándar es de gran ayuda. Para aquellos que hablan sobre 'otras' propiedades de encabezado de solicitud, si puede incluir un nombre/recurso de valores estandarizado similar que sería de gran ayuda.

[editar] Varios usuarios han propuesto soluciones que implican una llamada por cable a algún servicio web que hará la detección. Aunque estoy seguro de que esto funciona, no es una buena solución para un sitio de comercio electrónico empresarial por dos razones: 1) velocidad. Una llamada a través del cable para cada solicitud de página a un tercero tendría enormes implicaciones de rendimiento. 2) dependencia/legal. Ataremos el tiempo de respuesta de nuestro sitio web y la funcionalidad clave a su servicio, lo que es horrible por razones legales y de riesgo.

+0

Se puede ver algunas ideas en http://stackoverflow.com/questions/6844020/way-to -do-content-adaptation-to-mobile –

Respuesta

42

¿No sería la forma estándar de comprobar el agente de usuario? Aquí hay un database of user agents que puede usar para detectar navegadores móviles.

+2

No me di cuenta de que había una referencia activamente mantenida para estos. Gracias. – Peter

+2

WURFL para Java es un desastre. Buena suerte para encontrar los enlaces de Java dados para descargar. –

+1

WURFL es un cerdo de la memoria. ¿Y 15 MB XML? Pero hace lo que dice. – boring

0

Usted tendrá que comprobar la cadena de agente de usuario con una lista previamente definida, like this one

1

Obtendrá la mayor parte de la información como el navegador, dispositivo, idiomas aceptados, formatos aceptados, etc. del encabezado de la solicitud. El agente de usuario mencionado anteriormente es parte del encabezado de solicitud.

6

Si bien puede detectar un navegador móvil a través de su agente de usuario, la guerra del navegador en la plataforma de PC ha demostrado que olfatear a los agentes de usuario no es realmente tan bueno.

Lo ideal es que se apliquen estilos específicos según el tipo de medio o que se envíe una respuesta diferente basada en un encabezado distinto del agente de usuario, como el encabezado Aceptar, que indica qué tipo de contenido que el navegador prefiere

En este momento podría ser suficiente codificar un sitio que funcione con el iPhone y con Opera a través del rastreo del navegador, pero Google Now llegará en cualquier momento y hay muchos otros teléfonos móviles que tendrán la funcionalidad del navegador cerca del iPhone en el futuro cercano y sería un desperdicio desarrollar un sitio web móvil que no admitiera esos dispositivos desde el principio.

20

@ La respuesta de David se menciona usando WURFL, que es probablemente su mejor opción. Sin embargo, tenga en cuenta que la tasa de éxito suele ser de alrededor del 60% (de la experiencia de la mía y de los demás). Con los transportistas cambiando los UA constantemente y la cantidad de perfiles de dispositivo que existen (¿más de 60,000?), No hay una forma a prueba de balas para obtener todos los datos correctos que desee.

Solo un poco de advertencia antes de confiar mucho en un dispositivo DB.Intentaría mantener abiertas las opciones del usuario al permitirles cambiar las opciones de sesión en caso de que haya adivinado mal.

+2

+1 para el asesoramiento que permita al usuario elegir su propia experiencia – mikek3332002

0

puede utilizar un servicio web para detectar la navegación móvil como handsetdetection.com.

+2

Una llamada a través del cable para cada solicitud de página no es factible por razones de rendimiento – Peter

2

propongo un sistema de detección libre que se basa en UAProf y agente de usuario: http://www.mobilemultimedia.be UAProf debe ser la clave principal para la detección de cuando está disponible, ya que por lo general son múltiples agentes de usuario para el mismo UAProf. Si desea administrar esto por su cuenta, debe ir a Wurfl porque puede descargar la base de datos completa y administrarla localmente.

0

El hecho es que confiar en el agente de uso no es lo suficientemente bueno para detectar los navegadores móviles.

Claro, hace años se podía buscar ciertas cadenas y adivinar que era un Nokia o algo así, pero ahora hay tantos teléfonos, y tantos que pretenden ser cosas que no son algo más sofisticado es necesario.

Encontré un gran sitio en link text que se basa en la misma solución que MTV usa para todos sus sitios web móviles. Es REALMENTE bueno, ya que tiene un lenguaje de marcado independiente del dispositivo, pero lo más importante es que ofrecen una llamada al servicio web para isMobileDevice().

Simplemente mire en el manual y luego 'cómo funciona'.

Lo he estado usando para los sitios de mis clientes y aún tengo que encontrar un navegador móvil que no detecte con precisión. Totalmente cegador

+2

Esto no es razonable por razones de rendimiento: 'El uso de WAPL es extremadamente fácil y solo requiere pasas WAPL válido a los servidores de Wapple usando los servicios web SOAP o REST. El servidor del servicio web responde con el marcado para que pueda enviarlo al dispositivo. Usted tiene control total sobre el contenido, el diseño y los elementos de presentación ". – Peter

+1

Probablemente sea relevante señalar que el respondedor es el CTO de la organización "wapple" que publica wapl.info y otro servicio relacionado proporcionado por wapple. http://www.gomonews.com/richwapple/ – Cheekysoft

2

cuando tenía una necesidad similar hace poco, me encontré this code que utiliza HTTP_X_WAP_PROFILE, HTTP_ACCEPT y HTTP_USER_AGENT para identificar un navegador como móvil o no móvil. Es PHP, pero podría convertirse bastante fácilmente en lo que necesite (lo implementé en VBScript para ASP clásico).

Irónicamente, resultó que yo no las usamos el código porque decidimos dar URL específicas para usuarios móviles y no móviles, pero sin duda funcionó cuando estaba probando ...

5

Después de días de buscar la forma correcta de detectar un dispositivo móvil, decidí mantenerlo simple [estúpido] y pondré un botón de 'sitio de dispositivo móvil' en mi página de índice ... ¡está a solo un clic de distancia!

8

Puede utilizar Modernizer para detectar las capacidades del navegador

0

acaba de ejecutar a través de Device and feature detection on the mobile web con estos contenidos:

  1. Usar la detección de dispositivo y función para mejorar la experiencia del usuario en la web móvil
  2. Introducción a la detección de dispositivo
  3. Aproximaciones al diseño de sitio móvil
    1. No hacer nada
    2. Proporcionar un sitio móvil genérico
    3. Proyectos con el móvil y la adaptación en cuenta
  4. de adaptación y dispositivo de agrupamiento estrategias de contenido
    1. dispositivo de agrupamiento
    2. Adaptación de contenidos
  5. Mini mising la necesidad de adaptación en el primer lugar
  6. Enfoques comunes para la detección de dispositivos
    1. adaptación del lado del servidor
    2. adaptación del lado del cliente
    3. del lado del servidor agente de usuario (UA) y la búsqueda de cabecera
    4. servidor -Una cadena UA combinada con la búsqueda en la base de datos del dispositivo
    5. Detección de perfiles de agente de usuario del lado del servidor (UAProf)
    6. Detección basada en tecnología JavaScript
    7. tipos de medios CSS
    8. medios CSS consulta
  7. mejores prácticas adicionales
    1. de redirección + enlace manual de
    2. página de destino + enlace manual de
  8. página de muestra offline
1

OK, aquí hay una respuesta muy simple: ¿qué le parece dejar que el usuario decida? en su inicio de sesión a su ap, proporcione un enlace al sitio móvil. en el sitio móvil, proporcione un enlace "de regreso al sitio principal" - pruebe www.fazolis.com en su dispositivo móvil - hacen un buen trabajo al respecto.

Luego, en el enlace al sitio móvil desde el sitio del navegador, registre su "voto" y su agente de usuario. Puede crear su propia lista confiable de SUS clientes que desean el sitio móvil. Úselo con las especificaciones en el tamaño de pantalla para estos dispositivos móviles, y puede construir una lógica bastante buena para una experiencia de usuario satisfactoria. NUNCA publicaría en una fuente de red algo tan elemental como esto.

Ah, y en su "sitio móvil" - si usted escribe su ap semánticamente bien, entonces usted debería ser capaz de presentar un solo sitio para ambos móvil y navegador frente a tener que escribir dos conjuntos de páginas separadas. Solo algo en lo que pensar: vale la pena el esfuerzo y el esfuerzo extra para ahorrar tiempo después.

3

La siguiente configuración de Apache peso ligero hace un muy buen trabajo y recuerda las preferencias del usuario si prefieren la versión PC

<VirtualHost (your-address-binding)> 

    (your-virtual-host-configuration)  

    RewriteEngine On  
    RewriteCond %{QUERY_STRING} !ui=pc 
    RewriteCond %{HTTP_COOKIE} !ui=pc 
    RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR] 

    RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC] 

    RewriteRule /(.*) http://bemoko.com/$1 [L] 

    RewriteCond %{QUERY_STRING} "ui=pc" 
    RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/] 
    RewriteCond %{QUERY_STRING} "ui=default" 
    RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/] 
</VirtualHost> 

Más antecedentes sobre este @http://bemoko.com/training.team/help/team/pc-to-mobile-redirect

1

La forma más sencilla es crear una matriz con las etiquetas regulares asociados con los navegadores móviles. Al menos la mayoría de los agentes de usuario móvil deben tener la palabra mobile, mini, nokia, java ME, android, iphone, sistema operativo móvil, etc. Si alguno coincide con el agente de usuario, utilizando php strpos, imprima un botón móvil en la parte superior de la página . Deja al usuario para elegir. Me encanta el sitio completo porque mi navegador móvil me brinda la misma experiencia, excepto que necesito hacer zoom o desplazarme la mayoría de las veces.

0

puede utilizar las API de WURFL para detectar el tipo de dispositivo

http://wurfl.sourceforge.net/wurfl_schema.php 

o Modernizer para detectar las capacidades del navegador

Cuestiones relacionadas