[CodeSnipeet] C# Detección personaliza de un navegador móvil

Fácilmente  podríamos detectarlo usando la siguiente propiedad: Request.Browser.IsMobileDevice.

Pero esta propiedad no satisface algunos casos, por ejemplo con Opera Mini en un equipo Nokia. Si queremos crear nuestro propio método, podemos usar el siguiente código, extraído del artículo: Detecting a mobile browser in ASP.NET:

   1:  protected Boolean IsCustomMobileBrowser()
   2:  {
   3:      //GETS THE CURRENT USER CONTEXT
   4:      HttpContext context = HttpContext.Current;
   5:   
   6:      //FIRST TRY BUILT IN ASP.NT CHECK
   7:      if (context.Request.Browser.IsMobileDevice)
   8:      {
   9:          return true;
  10:      }
  11:      //THEN TRY CHECKING FOR THE HTTP_X_WAP_PROFILE HEADER
  12:      if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
  13:      {
  14:          return true;
  15:      }
  16:      //THEN TRY CHECKING THAT HTTP_ACCEPT EXISTS AND CONTAINS WAP
  17:      if (context.Request.ServerVariables["HTTP_ACCEPT"] != null &&
  18:          context.Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap"))
  19:      {
  20:          return true;
  21:      }
  22:      //AND FINALLY CHECK THE HTTP_USER_AGENT 
  23:      //HEADER VARIABLE FOR ANY ONE OF THE FOLLOWING
  24:      if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null)
  25:      {
  26:          //Create a list of all mobile types
  27:          String[] mobiles =
  28:              new String[]
  29:              {
  30:                  "midp", "j2me", "avant", "docomo", 
  31:                  "novarra", "palmos", "palmsource", 
  32:                  "240x320", "opwv", "chtml",
  33:                  "pda", "windows ce", "mmp/", 
  34:                  "blackberry", "mib/", "symbian", 
  35:                  "wireless", "nokia", "hand", "mobi",
  36:                  "phone", "cdm", "up.b", "audio", 
  37:                  "SIE-", "SEC-", "samsung", "HTC", 
  38:                  "mot-", "mitsu", "sagem", "sony"
  39:                  , "alcatel", "lg", "eric", "vx", 
  40:                  "NEC", "philips", "mmm", "xx", 
  41:                  "panasonic", "sharp", "wap", "sch",
  42:                  "rover", "pocket", "benq", "java", 
  43:                  "pt", "pg", "vox", "amoi", 
  44:                  "bird", "compal", "kg", "voda",
  45:                  "sany", "kdd", "dbt", "sendo", 
  46:                  "sgh", "gradi", "jb", "dddi", 
  47:                  "moto", "iphone"
  48:              };
  49:   
  50:          //Loop through each item in the list created above 
  51:          //and check if the header contains that text
  52:          foreach (string s in mobiles)
  53:          {
  54:              if (context.Request.ServerVariables["HTTP_USER_AGENT"].
  55:                              ToLower().Contains(s.ToLower()))
  56:              {
  57:                  return true;
  58:              }
  59:          }
  60:      }
  61:   
  62:      return false;
  63:  }

P.D.: Si tienen algún dispositivo que no funciona en este código, nos dejan un comentario para actualizar el código.

Los detalles de la aplicación de este código, lo podemos ver en la siguiente página: http://sergiot2.com/browserInformation.aspx

Vamos a usar un navegador Wap para Windows, WinWap, para mostrar algunas páginas en su versión para móvil:

Si ingresamos a la página desarrollada:

Si ingresamos a Facebook vemos la redirección:

En Google presentan contenido de acuerdo al dispositivo:

Microsoft al parecer ya no tiene pensado soportar Wap:

Ingresando directamente a la dirección móvil:

Otros enlaces:

Saludos,

2 comentarios en “[CodeSnipeet] C# Detección personaliza de un navegador móvil”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *