2

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

用户代理是-

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

当我在WURFL 主页上输入此 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

为什么会这样?

4

2 回答 2

1

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

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

于 2012-08-30T21:23:15.857 回答
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。

于 2013-07-08T15:31:42.257 回答