Home > Programación > Detectar Acceso Móvil con ASP

Detectar Acceso Móvil con ASP

November 10th, 2009 Leave a comment Go to comments

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

Nota: 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.

Términos de búsqueda
Compartir:

  • email
  • Twitter
  • Digg
  • del.icio.us
  • MySpace
  • Facebook
  • Mixx
  • Google Bookmarks
  • Technorati
  • Live
  • Meneame
  • Yahoo! Bookmarks
  • LinkedIn
  • StumbleUpon
Categories: Programación Tags: , ,
  1. No comments yet.
  1. No trackbacks yet.