通过WURFL将IE9检测为移动设备

时间:2012-08-23 08:03:19

标签: internet-explorer-9 user-agent wurfl mobile-devices ektron

我有一个Ektron网站,它使用WURFL(最新版本,2.3.2)来检测设备。使用IE9浏览网站时,会向用户显示该网站的移动版本。

用户代理是 -

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

当我在WURFL homepage上输入此UA时,它显示为通用网络浏览器。

但是,在使用Asp.NET WURFL库时,它会被检测为移动设备。

以下代码 -

IWURFLManager wurflManager = wurflManagerProvider.WURFLManager;
IDevice device = wurflManager.GetDeviceForRequest(Request);
var device_os = device.GetCapability("device_os");
var device_os_version = device.GetCapability("device_os_version");
var device_model = device.GetCapability("model_name");

deviceinfo.Text += "WURFL Model: ";
deviceinfo.Text += device_model;

deviceinfo.Text += "WURFL Device OS: ";
deviceinfo.Text += device_os;

deviceinfo.Text += "WURFL Device OS Version: ";
deviceinfo.Text += device_os_version;

输出 -

WURFL Model: Windows Mobile 7.5
WURFL Device OS: Windows Phone OS
WURFL Device OS Version: 7.5

为什么会这样?

2 个答案:

答案 0 :(得分:1)

问题在于WURFL并非旨在区分桌面设备和移动设备。它只关注移动设备。桌面通常被检测为移动设备。 解决方法是包含desktop_browser_patch.xml文件。但是,您必须手动将Firefox 15和16添加到补丁文件中,并继续使用出现的每个版本的Firefox更新它。

我发现最好在User代理上使用Regular表达式来确定它是桌面还是移动。如果它是移动设备,则仅使用Wurfl检测设备功能。 在线有几个正则表达式。它们都是不完美的。还要检查Request.Browser.IsMobileDevice。如果这是真的,那么它就是移动设备。如果这是假的,那么它可能是也可能不是移动设备。

答案 1 :(得分:1)

我在这里参加派对有点晚了,但我在这个问题上与Ektron的支持人员合作过。

直到Ektron版本8.6,他们使用的是tholder WURFL API驱动程序。它无法正常工作。它不仅将IE 9视为移动浏览器,而且还没有将Android OS 4.0+视为移动浏览器(始终显示桌面)。

补丁文件也没有解决问题。

我遇到这个问题的原因是因为它没有读完整个wurfl.xml.gz文件。

经过Ektron支持的多轮来回,我们决定为Ektron 8.6制作修补程序来解决这个问题是一项巨大的任务。

升级到Ektron 8.7可以解决这个问题,因为它使用新的WURFL API驱动程序,现在可以正确检测IE 9和Android。