Identificar se o acesso é por desktop ou mobile

Pessoal,

Tenho uma aplicação que precisa validar se o usuário está usando desktop ou mobile.
Atualmente isso é identificado pelo tamanho da tela (se menor que X é Mobile), mas precisava de algo mais eficaz, pois se abrirem o browser em tela mentor, muda para mobile (falso).

Pesquisei sobre o navigator.userAgent, mas não sei se é o melhor dos cenários, pois não sei se atende em todos os Browsers ou se teria uma solução melhor para isso.

Aqui onde trabalho fazemos pelo userAgent, usamos nginx(servidor proxy http) e adicionamos um parametro no userAgent, vou te passar o bloco de conf no nginx, vc pode configurar o teu parecido(mesmo em outros server)

server {
listen nomeDoSite:8181;
server_name nomeDoSite.viewit.com.br;

    location /nomeDoSote-s/ {
            alias /Users/local/projetos/nomeDoSite-web/Web/static/;
    }

    location / {
            proxy_pass http://local.nomeDoSite.com.br:8080;
            keepalive_requests 100;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_set_header  X-Forwarded-For  $remote_addr;
            proxy_set_header X-Host $host;
            proxy_set_header User-Agent "NossoAgent; WebToMobile; Mozilla/5.0";
    }

}

quando o request chega no server real, o server identifica o agent(se tem ou nao) e da o by pass

Obrigado Fabio…

Mas li por aí que não é tão recomendado usar userAgent, por algumas razões como:

  • Não identificar novos aparelhos mobile (que é um risco conforme a evolução rápida dos mesmos)

Recomendaram usar “modernizr”, só não achei nenhum exemplo com o mesmo.

Outra recomendação foi de usar o site http://detectmobilebrowsers.com/ que gera o script na linguagem que agradar.

Mas obrigado mesmo pela colaboração.

O motivo que recomendaram usar uma biblioteca é porque no mundo JS é mais fácil importar uma biblioteca de terceiro até para as coisas mais triviais, como usar regex numa string. Mas você chegou a ler o script pra ver o que ele usa? Dica: ele usa a informação do user-agent.

1 curtida

Sim, vi sim… De todo jeito acaba caindo no user.Agent…