0

我有一个具有移动和传统网页的 .net 应用程序。对于我使用 wurfl 的设备检测,问题不在于将什么 chrome 检测为移动设备。我尝试使用所有可用版本的 wurlf,以及使用网络浏览器补丁。无论登录什么电脑,我的日志都会显示以下内容。任何帮助或经验将不胜感激

Client Browser Information:
UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
IsMobileDevice: True
MobileDeviceManufacturer: Asus
MobileDeviceModel: Transformer Pad TF300T
Browser: Chrome
MajorVersion: 35
MinorVersion: 0
Id: chrome
InputType: keyboard
Platform: Android
EcmaScriptVersion: 3.0
4

1 回答 1

1

request.browser.isMobileDevice 位于 wurfl 之外,不会受到是否包含 wurfl 的影响。除非您明确地用 wurfl 值覆盖该值,这听起来不像您的描述。

使用 wurfl api 的文档非常好,可以在这里找到

http://wurfl.sourceforge.net/dotnet_index.php

它显示了如何设置 WurflManager 以及如何根据基于您传入的用户代理的设备对象检查 is_mobile 之类的“功能”。设置后,如果它是移动的或不是

device.GetVirtualCapability("is_mobile")

对于默认的 Chrome 桌面浏览器,您的用户代理看起来是正确的,所以这应该不是问题。

设置 MVC 站点,以便能够使用 .Mobile 扩展名路由到单独的移动视图。你会在 Global.asax 中设置这样的东西

        // Remove default Mobile display mode if previously registered
        var dm = DisplayModeProvider.Instance.Modes
            .FirstOrDefault(x => x.DisplayModeId == DisplayModeProvider.MobileDisplayModeId);
        if (dm != null)
        {
            DisplayModeProvider.Instance.Modes.Remove(dm);
        }

        var configurer = new ApplicationConfigurer();
        var manager = WURFLManagerBuilder.Build(configurer);

        DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Mobile")
        {
            ContextCondition = Context => manager.GetDeviceForRequest(Context.Request.UserAgent).GetVirtualCapability("is_mobile") == "true"
        });

如果您正在使用其他技术堆栈,或者不在 MVC 中以这种方式路由视图,那么本文将详细介绍这些用例中的大部分。

http://www.asp.net/whitepapers/add-mobile-pages-to-your-aspnet-web-forms-mvc-application

您仍将要创建 WurflManager,并检查与上述相同的功能,但您将在通常检查 IsMobileDevice 的任何地方执行此操作。

于 2014-06-13T19:59:56.047 回答