Detectar Dispositivo Laravel 8

detectar_dispositivo_laravel8_feature_image

Si estas trabajando con Laravel seguro llego el momento de saber si tu web se abre desde una Computadora o un teléfono móvil para mejorar el responsive  (Ajuste de componentes) de tu web, aquí te explicamos como realizarlo.

jenssegers/agent

Jenssegers es un agente o librería que podemos utilizar en PHP y Laravel que nos permitirá detectar el tipo de dispositivo del cual accede a nuestra web.

Antes de comenzar a configurarla quiero comentarte una limitante que encontré, si abres browsers o exploradores en modo incógnito el resultado que devuelve la librería es aleatorio y no real.

INSTALACIÓN

Creamos brevemente un nuevo proyecto en laravel e ingresamos a la carpeta del proyecto seguido de esto instalaremos la librería con el comando:

composer require jenssegers/agent

Ahora vamos a crear un proveedor de servicio, este lo que nos permite es crear configuraciones globales en nuestro proyecto dentro del llamado BootStrapped (Son las clases que cargarán al inicio de todo nuestro proyecto, encuentra más aquí)

Utilicemos el siguiente comando:

php artisan make:provider AgentServiceProvider

Ahora vamos a agregar el Agente de servicio dentro de la carpeta de configuración (config/app.php) con la siguiente línea:

AppProvidersAgentServiceProvider::class,
detectar_dispositivo_laravel8_config_app

Ahora agregamos el siguiente código dentro de nuestro AgentServiceProvider.php, en la función Boot, lo que realizamos es instanciar la clase y compartirla para utilizarla en las vistas.

$agent = new Agent();
$agent->setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2');View::share('agent', $agent);

Listo con eso podemos ya utilizar la variable para determinar el dispositivo, si creamos una vista podemos agregar la siguiente validación:

@if ($agent->isMobile() === true)

Hola Mobile

@endif @if ($agent->isDesktop() === true)

Hola Desktop

@endif

También podemos crear una ruta y en este caso si tenemos que instanciar la clase, aquí podemos utilizar el siguiente código que nos permitirá saber en que dispositivo estamos.

Route::get('detect', function () {$agent = new Agent();if ($agent->isMobile() || $agent->isTablet()) {if ($agent->is('android')) {return 'android';}if ($agent->is('iOS')) {return 'ios';}return $agent->platform();}if ($agent->isDesktop()) {if ($agent->is('Windows')) {return 'windows';}if ($agent->is('OS X')) {return 'OSX';}return 'desktop';}});
detectar_dispositivo_laravel8_desktop_windows

Como podemos ver la librería en un browser o explorador que no es incógnito funciona perfectamente, realiza tus pruebas y déjanos tus comentarios espero te sea de utilidad si necesitas soporte o asesoría contáctanos.