Подтвердить что ты не робот

Как работает IsMobileDevice?

MSDN заставляет так легко обнаружить мобильный браузер:

if (Request.Browser["IsMobileDevice"] == "true" ) 
{
    Response.Redirect("MobileDefault.aspx");
}

На самом деле, похоже, вы также можете просто проверить Request.Browser.IsMobileDevice. Но как это работает? У меня даже нет файла .browser... что происходит здесь за кулисами? Есть ли встроенные значения по умолчанию для ASP.NET 2.0?

4b9b3361

Ответ 1

Количество файлов *.browser поставляется с .NET:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers

Время выполнения использует регулярные выражения из файлов *.browser для сопоставления с входящей строкой User-Agent, а затем устанавливает набор свойств на основе каждого найденного совпадения (в иерархии может быть несколько).

Если вам нужна углубленная поддержка мобильных устройств, рассмотрите возможность установки MDBF, который добавит поддержку примерно 400 устройств:

http://mdbf.codeplex.com/

Ответ 2

Теперь, через 4 года, это еще проще

Request.Browser.IsMobileDevice

Ответ 3

Так как для большинства сайтов на самом деле размер экрана имеет значение, а не столько возможности (по крайней мере, когда речь идет о современных телефонах с такими вещами, как Safari и Chrome) не будет проверять разрешение, чтобы максимально использовать смысл?

Request.Browser.ScreenPixelsHeight

и

Request.Browser.ScreenPixelsWidth

Ответ 4

Я бы не стал полагаться на ссылку MSDN, для мобильных браузеров, к сожалению, нет общего стандарта, и многие пытаются имитировать свои немобильные аналоги. Также он вернет true, если он не распознает. См. Ссылку .

Ответ 5

Мое настоящее понимание заключается в том, что существует только одно точное решение проблемы обнаружения того, является ли браузер мобильным и затем обнаруживает его реальные возможности. Это решение - ScientiaMobile WURFL (http://www.scientiamobile.com). Который, по состоянию на 30 августа, больше не является бесплатным для каждого использования. WURFL теперь выпущен с API ASP.NET в AGPL. Репозиторий данных также поставляется с конкретной лицензией, которая запрещает как копирование, так и использование с API, отличными от стандартного (если только вы не покупаете коммерческую лицензию).

Таким образом, для практических целей другие подходы, такие как 51Degrees, не могут использоваться с более поздними и будущими версиями репозитория WURFL, и это затруднит обнаружение 51Degrees новых устройств (например, Windows Phone 7.5).

Как и для MDBF (отклоненный проект), может все еще работать, чтобы определить, мобильное устройство (намного лучше, чем IsMobileDevice в ASP.NET). Он не является полностью надежным в отношении свойств устройства. Он настаивает на том, что мой HTC Desire Android имеет размер экрана 240x320, что явно неправильно.

Моя компания купила лицензию WURFL, и мы абсолютно в порядке с ней.

Ответ 6

Проблемы были решены, а я добавил 51Degrees, просто добавьте 51degrees, используя Nuget. Подробнее здесь https://51degrees.codeplex.com

Ответ 7

Просто сделать это с помощью приведенного ниже кода,

if (Request.Browser.IsMobileDevice) 
{
    Response.Redirect("MobileDefault.aspx");
}