Como verificar se o dispositivo de acesso é mobile em MVC C#

0

Recentemente precisei redirecionar os usuários que faziam acesso de dispositivos móveis para uma nova área do meu site utilizando MVC4  onde todo o seu conteúdo era mais “limpo” e com menos funcionalidades.
mobile

Bom, para isto fiz um método na chamada da controller que fazia o primeiro acesso e antes de renderizar a primeira View eu já verificava qual dispositivo o usuário estaria utilizando.

Veja como ficou :


  public ActionResult Index()
        {
            if (VerificaMobile())
                return RedirectToAction("Index", "Home", new { area = "Mobile" }); 

            return View();    
        }

        public bool VerificaMobile()
        {
            if (this.Request.Browser.IsMobileDevice || Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null ||
              (Request.ServerVariables["HTTP_ACCEPT"] != null && Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap")))
            {
                return true;
            }
            else if (Request.ServerVariables["HTTP_USER_AGENT"] != null)
            {
                string[] mobiles = new[]
                {
                    "midp", "j2me", "avant", "docomo",
                    "novarra", "palmos", "palmsource",
                    "240x320", "opwv", "chtml",
                    "pda", "windows ce", "mmp/",
                    "blackberry", "mib/", "symbian",
                    "wireless", "nokia", "hand", "mobi",
                    "phone", "cdm", "up.b", "audio",
                    "SIE-", "SEC-", "samsung", "HTC",
                    "mot-", "mitsu", "sagem", "sony"
                    , "alcatel", "lg", "eric", "vx",
                    "NEC", "philips", "mmm", "xx",
                    "panasonic", "sharp", "wap", "sch",
                    "rover", "pocket", "benq", "java",
                    "pt", "pg", "vox", "amoi",
                    "bird", "compal", "kg", "voda",
                    "sany", "kdd", "dbt", "sendo",
                    "sgh", "gradi", "jb", "dddi",
                    "moto", "iphone", "ipad", "windows phone"
                };

                foreach (string s in mobiles)
                {
                    if (Request.ServerVariables["HTTP_USER_AGENT"].ToLower().Contains(s.ToLower()))
                    {
                        return true;
                    }
                }

            }

            return false;
        }
        
        

Este método pega o agente de navegação e verifica se o mesmo está em alguma das propriedades que eu coloquei, se sim redireciona o usuário para a área mobile do site, se não renderiza a View normalmente.

Espero que tenha sido útil, pois me ajudou bastante! 🙂

Um bom final de semana a todos!

 

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com