Detectar Acceso Móvil con ASP
Introducción
Este es un pequeño artículo de como detectar si se esta accediendo desde un dispositivo movil con un script ASP. La idea general es poder utilizar el script desde cualquier servidor que soporte la ejecucion de paginas ASP y/o ASP .Net.
Nota: Este script esta basado en: http://www.codeproject.com/KB/aspnet/mobiledetect.aspx
A diferencia del script original, este script remueve la verificación por la propiedad IsMobileDevice lo que impide que se ejecute en versiones anteriores del .Net Framework
Script Completo:
<%@ Page Language="C#" AutoEventWireup="true" ContentType="text/plain" %>
<script type="text/C#" runat="server">
void Page_Load(object sender, EventArgs e)
{
// Variable para almacenar el resultado de la deteccion
bool isMobile = false;
//Obtenemos el contexto actual
HttpContext context = HttpContext.Current;
//Variable que almacena la firma del navegador
string userAgent = context.Request.ServerVariables["HTTP_USER_AGENT"];
//Verificamos primero por la variable HTTP_X_WAP_PROFILE
if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null)
{
isMobile = true;
}
//Procedemos a verificar la firma del navegador
else if (userAgent != null)
{
//Lista posible de dispositivos
string[] mobiles =
{
"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"
};
//Recorremos el arreglo de los dispositivos
// y verificamos vs la firma del navegador
foreach (string mobile in mobiles)
{
if (userAgent.ToLower().IndexOf(mobile.ToLower()) != -1)
{
isMobile = true;
break;
}
}
}
//Imprimimos el resultado
Response.Write("UserAgent: " + userAgent.ToLower() + "\n");
Response.Write("IsMobile: " + isMobile + "\n");
Response.Write(".Net Framework: "+Environment.Version.ToString());
}
</script>
Muestra de la salida obtenida
UserAgent: mozilla/5.0 (windows; u; windows nt 6.1; es-es; rv:1.9.1.5) gecko/20091102 firefox/3.5.5 (.net clr 3.5.30729)
IsMobile: False
.Net Framework: 2.0.50727.4927
Términos de búsquedaNota: En este ejemplo utilize el metodo indexOf para comprobar el userAgent vs el dispositivo, como sugerencia, se puede utilizar expresiones regulares para hacer el script mas completo.
Recent Comments