Laravel

Detect mobile or desktop in laravel

Hello buddy, in this article we will learn about how to detect the device in laravel 7, laravel 8,laravel 9 or check whether the request comes from the mobile device or from the desktop.

There are two ways to achieve our goal, one way is by using the jenssegers/agent laravel package, and another way without using the package.

First, we will see how we can detect mobile or desktop in laravel without using any package, then we will see how we can use it by using, jensseger/agent package in laravel.

Detect mobile or desktop in laravel without using any package.

Use the below code to detect response is coming from mobile or desktop

$useragent = $_SERVER['HTTP_USER_AGENT'];
    if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i', $useragent) || preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i', substr($useragent, 0, 4))) {
        // your code for mobile device
    }

You can also the add the above code in your helper and then call it anywhere you need check, the response is coming from which device.

If wants to know how to create helper in laravel, visit this url.

Detect mobile or desktop in laravel by using jensseger/agent package.

To use the jensseger/agent package we will follow the below guideline.

Install & Configure jenssegers Package

composer require jenssegers/agent

Now we need to set provider and alias. Navigate to config/app.php and add Jenssegers classes to providers and aliases like this:

config/app.php

'providers' => [
	....
	Jenssegers\Agent\AgentServiceProvider::class,
]
'aliases' => [
	....
	'Agent' => Jenssegers\Agent\Facades\Agent::class,
]

Create Routes for Detect Device

Now create routes to detect devices. Open routes/web.php and create routes like these:

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\FrontController;

Route::get('detect-device', [FrontController::class, 'detuctDebice'])->name('detect-device');

after adding the route please run the below command, as sometimes laravel doesn’t recognize the recently added route.

php artisan route:cache

Create Controller

Open terminal, type command, then execute the command that generates a new controller

php artisan make:controller FrontController

Open and add code in app/http/controllers/FrontController.php file:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Jenssegers\Agent\Agent;

class FrontController extends Controller
{
    public function detuctDebice()
    {
        $agent = new Agent;

        $mobileResult = $agent->isMobile();
        if ($mobileResult) {
          $result = 'Yes, This is Mobile.';
        }

        $desktopResult= $agent->isDesktop();
        if ($desktopResult) {
          $result = 'Yes, This is Desktop.';
        }

        $tabletResult= $agent->isTablet();
        if ($tabletResult) {
          $result = 'Yes, This is Desktop.';
        }

        $tabletResult= $agent->isPhone();
        if ($tabletResult) {
          $result = 'Yes, This is Phone.';
        }


        dd($result);
    }
}

Use in Blade File

You can use the device detector package easily in laravel blade file just like below.

@if((new \Jenssegers\Agent\Agent())->isDesktop())
{{-- your code --}}
@endif
@if((new \Jenssegers\Agent\Agent())->isMobile())
{{-- your code --}}
@endif

I hope now you understood, how to detect device in laravel, by using package and without package, still have the confusion feel free to drop your comment.

Shaiv Roy

Hy Myself shaiv roy, I am a passionate blogger and love to share ideas among people, I am having good experience with laravel, vue js, react, flutter and doing website and app development work from last 7 years.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button