在.NET中移动浏览器设备检测如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (7)

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

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

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

提问于
用户回答回答于

我不一定认为我提议的是在许多情况下最好的解决方案,但它可能证明对问题领域的另一种见解。

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

相反,采取响应式设计的方法。我不会在这里详细讨论响应式设计,因为它会带我们脱离轨道。然而,它可以提供的是一种方法,它不是根据检测到的浏览器定制整个体验,而是根据屏幕分辨率,css功能,启用JavaScript等自定义体验的一种微妙方法。

响应式设计并非是一种技术性的说法,而是一系列技术,使得体验能够根据所使用的浏览器(移动浏览器)逐步增强。

例如,移动版本/桌面版本之间的差异非常大,所以响应技术并不真正允许(或者至少会受到影响)。由于每种技术通常会污染单独的体验,例如,html可能隐藏在移动版本中,但仍可能在后台下载......但是这些技术正在开发中,例如JavaScript可用于在移动浏览器上下载低分辨率图像,宽屏显示器上的高分辨率。

但是,始终可以链接到一个完全独立的移动版本/桌面版本的网站,以允许用户决定是否退款。

用户回答回答于

通过查看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引擎之间的差异。

扫码关注云+社区