Detectar dispositivos móviles y tabletas


Actualmente estoy buscando algún código para la detección PHP de móviles, lo cual es probablemente bastante fácil.

Ahora solo tengo un problema: quiero hacer posible hacer archivos de vista únicos en mi marco MVC para tabletas, móviles y páginas web. Así que necesito dividir la tableta del resto de los dispositivos móviles.

Actualmente este es el código que estoy usando:

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-la única comprobación es si el dispositivo es un dispositivo móvil - si no es como estándar diciendo 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 segundo grupo, que deberían ser tabletas.

Espero, que he dejado claro mi deseo, y espero, que usted tiene alguna contribución de una buena manera de lograr esto.

Gracias de antemano.

Author: Ilmari Karonen, 2012-04-02

4 answers

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

 33
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-30 00:59:04

Vieja pregunta, pero aquí va mi opinión sobre la detección móvil.

Usted indica en su pregunta que desea archivos únicos para dispositivos móviles, por lo que puedo asumir que la razón de 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 millones dispositivos Android activados cada día con resoluciones de 320*240 a 2560*1600, lo que lo hace difícil if {} else para cada uno de ellos. Incluso si intenta hacer una lista con la mayoría de los dispositivos utilizados y trata de apuntar solo a esos, será difícil admitir un nuevo dispositivo en el futuro.

Mi enfoque hace un tiempo fue olvidarme del antiguo método de dividir los 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 basa en las capacidades del navegador. Por ejemplo, si el navegador admite almacenamiento local, estará en " bueno" categoría.

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á entre 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 tamaño muy pequeño ( menos activos, html más pequeño) y en función de las capacidades del navegador se enriquecerá en el lado del cliente.

Así que al final terminarás con un sitio web que tiene una huella muy pequeña ( tamaño html y activos), que se ve BIEN navegador cruzado y será compatible con cualquier dispositivo nuevo que aparezca en el mercado sin ningún cambio, se cargará rápido incluso en conexiones pobres y que se puede enriquecer en el lado del cliente basado en las capacidades del navegador.

Incluso puede enriquecer la página web en función del tamaño de los dispositivos: si el navegador informa de una pantalla grande, puede traer más activos, más anuncios y hacer que la página web sea más hermosa ; si el navegador informes está en una pequeña pantalla, lo dejas como está.

 8
Author: Alexandru Guzinschi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-18 10:10:39

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

 5
Author: jacksonfdam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-10 11:18:05

También puede utilizar una solución más completa como WURFL Cloud, que es un servicio que detecta las capacidades de los dispositivos móviles, como is_mobile e is_tablet. Hay un plan gratuito para sitios de bajo tráfico: http://www.scientiamobile.com/cloud

 0
Author: SteveK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-07 17:34:26