Forma estándar de detectar navegadores móviles en una aplicación web basada en la solicitud http

StackOverflow https://stackoverflow.com/questions/142273

Pregunta

Estamos comenzando a recorrer el camino de la compatibilidad del navegador móvil para una aplicación web de comercio electrónico empresarial (basada en Java / Servlet). Por supuesto, hay muchas decisiones que tomar, pero me parece que la piedra angular es poder detectar de manera confiable los navegadores móviles y tomar 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 y, idealmente, recopilar más información sobre el navegador y el dispositivo que realiza la solicitud (tamaño de pantalla, capacidades html, etc.)?

También agradecería cualquier información complementaria que pueda ser de utilidad para alguien que haya seguido este camino de tomar una aplicación web empresarial a gran escala y diseñar el soporte para navegadores móviles desde el lado del desarrollo.

[editar] Ciertamente entiendo que el encabezado de la solicitud y la información sobre una base de datos de agentes de usuarios estándar es una gran ayuda. Para aquellos que hablan de "otras" propiedades de encabezado de solicitud, si pudiera incluir un nombre / recurso de valores estandarizados similares, sería una gran ayuda.

[editar] Varios usuarios han propuesto soluciones que involucran una llamada por teléfono 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 por el cable para cada solicitud de página a un tercero tendría enormes implicaciones de rendimiento. 2) dependencia / legal. Uniríamos el tiempo de respuesta de nuestro sitio web y la funcionalidad clave a su servicio, lo cual es horrible por razones legales y de riesgo.

¿Fue útil?

Solución

¿No sería la forma estándar verificar el agente de usuario? Aquí hay una base de datos de agentes de usuario que puede usar para detectar navegadores móviles.

Otros consejos

@ La respuesta de David mencionó el uso de WURFL, que probablemente sea tu mejor opción. Tenga en cuenta que, sin embargo, la tasa de éxito suele ser de alrededor del 60% (según la experiencia de la mía y de otros). Debido a que los operadores cambian constantemente los UA y la cantidad de perfiles de dispositivos 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 una base de datos del dispositivo. Intentaría mantener abiertas las opciones del usuario permitiéndoles cambiar las opciones de sesión en caso de que haya acertado.

Puedes usar Modernizer para detectar las capacidades del navegador

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

Lo que se debería hacer idealmente es que los estilos específicos se apliquen según el tipo de medio o que se envíe una respuesta diferente según el encabezado que no sea el agente del usuario, como el encabezado Aceptar, que indica qué tipo de contenido el navegador prefiere.

En este momento, podría ser suficiente codificar un sitio que funcione con el iPhone y con Opera mediante el rastreo del navegador, pero el Android de Googles llega en cualquier momento y hay muchos otros teléfonos móviles que tendrán la funcionalidad del navegador cerca del iPhone. en un futuro próximo y sería un desperdicio desarrollar un sitio web móvil que no sea compatible con esos dispositivos desde cero.

Después de días de buscar la forma correcta de detectar un dispositivo móvil, he decidido mantenerlo simple [estúpido] y colocaré el botón 'Sitio del dispositivo móvil' en mi página de índice ... es solo un clic lejos !!

Este artículo (y su seguimiento ) parece agradable.

Detectar navegadores móviles : fragmentos en varios lenguajes de programación.

La siguiente configuración ligera de Apache hace un trabajo bastante bueno y recuerda las preferencias del usuario si prefieren la versión para 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).*<*>quot; [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).*<*>quot; [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

Propongo un sistema de detección gratuito basado en uaprof y agente de usuario: http://www.mobilemultimedia.be UAprof debe ser la clave principal para la detección cuando esté disponible, ya que generalmente hay varios 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 por usted mismo.

Cuando tuve una necesidad similar recientemente, encontré este código 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 se puede convertir fácilmente en lo que necesites (lo implementé en VBScript para ASP clásico).

Irónicamente, resultó que no terminé usando el código porque decidimos proporcionar URL específicas para usuarios móviles y no móviles, pero ciertamente funcionó cuando lo estaba probando ...

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

Bien, aquí hay una respuesta muy simple: ¿qué hay de dejar que el usuario decida? al iniciar sesión en su aplicación, proporcione un enlace al sitio móvil. en el sitio móvil, proporcione un enlace " volver 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 " vote " y su agente de usuario. Puede crear su propia lista confiable de SUS clientes que desean el sitio móvil. Utilice este casamiento con las especificaciones del tamaño de la 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 para algo tan elemental como este.

Ah, y en tu " sitio móvil " - Si escribe su ap semánticamente bien, entonces debería poder presentar un sitio único tanto para el móvil como para el navegador, en lugar de tener que escribir dos conjuntos de páginas separados. Solo algo en lo que pensar: vale la pena el pensamiento y el esfuerzo adicionales para ahorrar tiempo más tarde.

No puedo verlo publicado aquí, pero otra opción que estoy buscando actualmente es www.detectmobilebrowser.com

La forma más sencilla es crear una matriz con etiquetas regulares asociadas a los navegadores móviles. Al menos la mayoría de los agentes de usuarios móviles deben tener la palabra móvil, mini, nokia, java ME, android, iphone, SO móvil, etc. Si alguna coincide con el agente del usuario, mediante php strpos, imprima un botón móvil en la parte superior de la página. . Deja que el usuario elija. 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.

Tendrá que verificar la cadena del agente de usuario con una lista previamente definida, como esto uno

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

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

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

Encontré un gran sitio en texto del enlace que se basa en la misma solución que utiliza MTV para toda su web móvil sitios Es REALMENTE bueno ya que tiene un lenguaje de marcado independiente del dispositivo, pero lo más importante es que ofrecen una llamada de servicio web para isMobileDevice ().

Solo mire 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!

Se acaba de encontrar Detección de dispositivos y características en la web móvil con estos contenidos:

  1. Uso de la detección de dispositivos y funciones para mejorar la experiencia del usuario en la web móvil
  2. Introducción a la detección de dispositivos
  3. Enfoques para el diseño de sitios móviles
    1. no hacer nada
    2. Proporcionar un sitio móvil genérico
    3. Diseñar con el móvil y la adaptación en mente
  4. Estrategias de adaptación de contenido y agrupación de dispositivos
    1. Agrupación de dispositivos
    2. Adaptación de contenido
  5. Minimizar la necesidad de adaptación en 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. Agente de usuario del lado del servidor (UA) y búsqueda de encabezado
    4. Cadena UA del lado del servidor combinada con la búsqueda en la base de datos del dispositivo
    5. Detección de perfiles de agente de usuario (UAProf) del lado del servidor
    6. Detección basada en tecnología JavaScript
    7. tipos de medios CSS
    8. consultas de medios CSS
  7. Mejores prácticas adicionales
    1. Redirección + enlace manual
    2. Página de destino + enlace manual
  8. página de muestra descargable

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top