2012-04-02 18 views
22

Actualmente estoy buscando un código para la detección de móviles PHP, que probablemente sea bastante fácil.Detección de dispositivos móviles y dispositivos de tableta

Ahora solo tengo un problema: quiero permitir la creación de archivos de vista únicos en mi MVC-framework para tabletas, móviles y páginas web. Entonces, necesito dividir la tableta del resto de los dispositivos móviles.

Actualmente este es el código que estoy utilizando:

public function isMobile() 
{ 
    if(preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT'])) 
    return true; 
else 
    return false; 
} 

Pero esto no es suficiente - el único freno es wheter el dispositivo es un dispositivo móvil - si no es de serie contando el marco, que estamos en una computadora. La última parte está bien, pero quiero hacer una división de los dispositivos móviles en móviles reales, y en un grupo seco, que deberían ser tabletas.

Espero que haya aclarado mi deseo, y espero que tenga algo que aportar de una buena manera para lograrlo.

Gracias de antemano.

+0

Así que su expresión regular no es aceptable o si desea dividir esta expresión regular en múltiples (para móviles y tabletas)? – tonymarschall

+0

> Aquí hay una clase con métodos para detectar cada plataforma individualmente. >> http://code.google.com/p/php-mobile-detect/ Eso solo funciona en la ópera en tabletas. El navegador Android integrado en tabletas devuelve su móvil. – hello

Respuesta

33

Aquí hay una clase con métodos para detectar cada plataforma individualmente.

+1

En realidad, esto responde a la pregunta - si se asegura de hacer el isTablet-cheque antes de que el cheque-isMobile .. Debido a que las tabletas también se marca como "móviles" - por razones lógicas .. :) Gracias, Joe! – denlau

+3

¡Encontré eso hoy más temprano! ¡Iba a responder esta pregunta exactamente cómo respondió esta respuesta! +1 – pattyd

+0

¿Hay algo como esto disponible para ASP.NET? –

0

También se puede utilizar una solución más completa como WURFL la nube, que es un servicio que detecta las capacidades de los dispositivos móviles, como IS_MOBILE y IS_TABLET. Hay un plan gratuito para sitios con poco tráfico: http://www.scientiamobile.com/cloud

5

Mobile_Detect es una clase PHP liviana para detectar dispositivos móviles (incluidas tabletas). Utiliza la cadena User-Agent combinada con encabezados HTTP específicos para detectar el entorno móvil. - Leer más http://mobiledetect.net

+0

Gracias, es bastante útil. – deathlock

8

Pregunta anterior, pero aquí va mi opinión con respecto a la detección móvil.

Indique en su pregunta que desea archivos únicos para dispositivos móviles, por lo que puedo suponer que la razón para esto es presentar una versión diferente del sitio web para clientes móviles y clientes de escritorio.

Este enfoque está bien hasta cierto punto. Y ese punto se llama Android. Hay ~1.5 million dispositivos Android activados cada día con resoluciones de 320 * 240 a 2560 * 1600, lo que hace que sea difícil obtener if {} else para cada uno de ellos. Incluso si intenta hacer una lista con la mayoría de los dispositivos usados ​​e intenta enfocarse solamente en ellos, será difícil admitir un nuevo dispositivo en el futuro.

Mi enfoque hace un tiempo era olvidar el viejo método de dividir dispositivos en categorías "móviles" y "de escritorio" y crear un nuevo método. Y ese método consiste en navegadores "buenos" y "malos" que se basan en las capacidades del navegador. Por ejemplo, si el navegador admite el almacenamiento local, estará en la categoría "buena".

A partir de esto, tuve la posibilidad de crear una versión "base" del sitio web, muy básica desde el punto de vista de la interfaz de usuario, pero que funcionará en todos los navegadores. Esta versión base del sitio web presentará el mismo contenido (porque eso importa al final del día) en todos los dispositivos, será de un tamaño muy pequeño (menos activos, menor html) y se basará en las capacidades del navegador. enriquecido en el lado del cliente.

Así que al final el resultado final será con un sitio web que tiene muy poco espacio (tamaño html y activos), que se ve cruzada navegador OK y apoyará cualquier nuevo dispositivo que aparece en el mercado sin ningún tipo de cambios , se cargará rápido incluso en conexiones deficientes y se puede enriquecer en el lado del cliente según las capacidades del navegador.

Incluso puede enriquecer la página web basada en el tamaño dispositivos: si el navegador informa de una pantalla de gran tamaño, puede traer más activos, más anuncios y hacer que la página más bella; si el navegador informa que está en una pantalla pequeña, déjelo como está.

+1

En realidad esta respuesta es la pena leer, no importa lo que - es un enfoque fresco, que no he pensado alguna vez en :) – denlau

+1

Aprobar en su totalidad de este enfoque, y es exactamente lo que estoy tratando de lograr, pero sin duda es más fácil dicho más que hecho, ¡al menos a nivel del servidor! –

Cuestiones relacionadas