.NET中的移动浏览器设备检测

时间:2011-08-19 03:10:10

标签: asp.net .net mobile browser-detection

我刚刚开始创建我用WebForms编写的第一个移动版桌面网站。

我目前的问题与移动设备/浏览器检测有关。

我想要确定的是a)如果你的设备是移动的b)什么操作系统(Android / IOS /等)以防万一我需要根据操作系统处理任何不同的东西c)什么屏幕尺寸(用于加载)不同的样式表)

3 个答案:

答案 0 :(得分:12)

通过查看useragent字符串来检测浏览器的类型是最简单的。该字符串中的关键字将有助于检测浏览器。 UserAgentString.com维护了一个完整的useragent字符串列表,但您需要查找的主要内容只有几个关键字。

例如,从Blackberry设备浏览时,只显示“黑莓”一词。与iPad和iPhone类似。 Android设备都在useragent字符串中显示“android”,但它们通过为手机添加关键字“mobile”来区分平板电脑和手机。

以下是我们在移动应用程序中检测桌面,手机和平板电脑的方法:

    public enum DeviceType
    {
        Desktop,
        Tablet,
        Phone
    }

    public static DeviceType UserAgentToDeviceType(string userAgent)
    {
        if (userAgent.ToLowerInvariant().Contains("blackberry"))
            return DeviceType.Phone;

        if (userAgent.ToLowerInvariant().Contains("iphone"))
            return DeviceType.Phone;

        if (userAgent.ToLowerInvariant().Contains("ipad"))
            return DeviceType.Tablet;

        if (userAgent.ToLowerInvariant().Contains("android"))
        {
            if (userAgent.ToLowerInvariant().Contains("mobile"))
                return DeviceType.Phone;
            else
                return DeviceType.Tablet;
        }

        return DeviceType.Desktop;
    }

如果您使用jQuery Mobile之类的内容,则无论设备类型如何,都会针对移动设备自定义网站,并且它将处理不同设备上的JavaScript引擎之间的差异。

答案 1 :(得分:4)

在某些情况下,我不一定认为我提议的是最佳解决方案,但它可能是对您的问题领域的另一种洞察力。

而不是检测移动浏览器本身,这与浏览器嗅探有一些相似之处。

取而代之的是响应式设计。我不会在这里详细介绍响应式设计,因为它会让我们偏离轨道。然而,它可以为您提供的是一种方法,它不是根据检测到的浏览器自定义整个体验,而是根据屏幕分辨率,CSS功能,启用JavaScript等等来定制体验的更微妙的方法。

响应式设计不是一种技术,而是一套技术,可以根据所使用的浏览器(移动浏览器)逐步增强体验。

什么样的响应技术并不真正允许(或者至少它受到损害)是例如:移动版/桌面版。因为每个人通常会污染单独的体验,例如html可以隐藏在移动版本上,但可能仍然在后台下载......但这些技术正在开发中,例如JavaScript可用于在移动浏览器上下载低分辨率图像,在宽屏幕显示器上下载高分辨率图像。

但是你总是可以链接到一个完全独立的移动版/桌面版网站,以允许用户决定作为后备。

答案 2 :(得分:1)

WURFL是一个很好的资源。您可以配置所需的值(无需使用其所有参数)。我想如果你想创建自己的解决方案 -

1)您可以使用WURFL XML 2)根据您的需要列出参数 3)使用XML Reader读取其xml并将值放入数据库中。

这样您就可以拥有自己的解决方案。 (a虽然有一个问题是以后在WURFL注册的新设备不会自动更新,所以你必须自己稍后更新它)