我刚刚开始创建我用WebForms编写的第一个移动版桌面网站。
我目前的问题与移动设备/浏览器检测有关。
我想要确定的是a)如果你的设备是移动的b)什么操作系统(Android / IOS /等)以防万一我需要根据操作系统处理任何不同的东西c)什么屏幕尺寸(用于加载)不同的样式表)
答案 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注册的新设备不会自动更新,所以你必须自己稍后更新它)