Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2011, 00:58
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Mejor opcion para detectar dispositivos moviles

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
  1. $bc = new Browscap('./');
  2. $browser = $bc->getBrowser();
  3. echo '<pre>';
  4. var_export($browser);
  5. 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.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 19/09/2011 a las 01:00 Razón: Encabezados PHP? :borracho: son HTTP! :-D