Preguntando a san google y probando un poco, he visto algunas opciones para detectar dispositivos moviles y, a manera de aporte y a la vez consulta, expongo los que he visto:
get_browser() - funcion de PHP.
Parece interesante, el unico inconveniente es que hay que descargar el archivo
browscap.ini y editar php.ini para agregar o editar la directiva browscap=/ruta/para/browscap.ini
No es que sea imposible de lograr, pero si resultara incomodo buscar alternativas en servidores compartidos donde no se tiene acceso a php.ini ni puedes cambiar directivas por .htaccess ni por ini_set()... suficiente para alejarme de esto.
Browscap - Clase PHP
Tambien requiere la descarga de browscap.ini, pero lo hace automaticamente por el primer medio que encuentre disponible fsock, file_get_contents o cURL y crea un par de archivos temporales en la ruta que especifiquemos al instanciar la clase.
Ejemplo de uso:
Código PHP:
Ver original$bc = new Browscap('./');
$browser = $bc->getBrowser();
echo '<pre>';
echo '</pre>';
Los resultados para un Samsung Galaxy Fit son:
Código:
stdClass::__set_state(array(
'browser_name' => 'Mozilla/5.0 (Linux; U; Android 2.2.1; es-us; GT-S5670L Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',
'browser_name_regex' => '^mozilla/5\\.0 \\(linux; u; android 2\\.2.*; .*; .*\\) applewebkit/5.* \\(khtml, like gecko\\) .*version/4\\.0 mobile safari/5.*$',
'browser_name_pattern' => 'Mozilla/5.0 (Linux; U; Android 2.2*; *; *) AppleWebKit/5* (KHTML, like Gecko) *Version/4.0 Mobile Safari/5*',
'Parent' => 'Android',
'Version' => '2.2',
'MajorVer' => 2,
'MinorVer' => 2,
'Browser' => 'Android',
'Platform' => 'Android',
'Frames' => true,
'IFrames' => true,
'Tables' => true,
'Cookies' => true,
'JavaScript' => true,
'isMobileDevice' => true,
'CssVersion' => 2,
'Alpha' => false,
'Beta' => false,
'Win16' => false,
'Win32' => false,
'Win64' => false,
'BackgroundSounds' => false,
'VBScript' => false,
'JavaApplets' => false,
'ActiveXControls' => false,
'isBanned' => false,
'isSyndicationReader' => false,
'Crawler' => false,
'AolVersion' => 0,
))
Lo mejor de todo esto es que basta un
if($browser->isMobileDevice) para obtener lo que deseamos y, aparentemente, el cache se actualizara de forma automatica cada determinado tiempo, segun se defina en la propiedad
$updateInterval, 5 dias por default.
Mobile Detect - Clase de PHP
Un pequeño archivo que busca info en los encabezados HTTP, es una lastima que solo consegui el Samsung para pruebas, me gustaria ver si esto funciona con Nokia, Sony y alguna otra marca para saber si es realmente fiable.
WURFL - API para PHP
Confieso que todavia estoy revisando la documentacion y, aunque parece muy completo, me gustan mas las dos anteriores.
Espero que mis sobrinos me presten sus celulares para hacer las pruebas necesarias y ya estare contando los resultados. En calidad de mientras, si alguien tiene oportunidad de probar, mucho agradeceria si nos trae algunos avances.