ASP.NET MVC 3 простое и надежное обнаружение мобильных устройств: использовать 51degrees.mobi или перейти на родной? - PullRequest
6 голосов
/ 14 марта 2012

В моем веб-приложении ASP.NET MVC 3 я перезаписываю имя представления в специализированном движке представления, чтобы представить другое представление, оптимизированное для мобильных устройств без планшетного ПК.

Все, что я хочу выполнить, это переопределение представленияявляется точным значением для Request.Browser.IsMobileDevice и собственной ширины дисплея устройства.

51degrees.mobi выглядит очень тяжелым и запутанным для этого простого варианта использования.Может быть, это просто мое разочарование, когда я пытаюсь просмотреть все примеры и документацию на веб-сайте 51 градуса, чтобы получить ответы на простые вопросы для простой реализации.

Отсутствует 51 градус, я получаю значения дляRequest.Browser.IsMobileDevice и Request.Browser.ScreenPixelsWidth.Я заметил, что для настольных браузеров ширина всегда равна 640, тогда как Request.Browser.Capabilities["51Degrees.mobi"] содержит значение "Неизвестно" для ScreenPixelsWidth.Я предполагаю, что значение Unknown является более точным, учитывая характер реализации на стороне сервера.

Мой главный вопрос: мне действительно нужно 51 градус для моих простых требований?

Если я этого не сделаюиспользуйте 51 градус, есть ли конкретные примеры браузеров, которые я не смогу правильно определить IsMobileDevice и ширину экрана?Например, будут ли встроенные значения .NET Request.Browser.IsMobile и ScreenPixelsWidth неточными или отсутствовать для нового iPad, когда он выйдет, или для последней версии браузера Android?Мой сайт получает около 65% пользователей мобильных устройств, многие из которых работают на слабых функциональных телефонах с браузерами, такими как UP.Browser, поэтому настройка мобильных устройств является чем-то важным.

Если я использую 51 градус, нужно ли мне всегда углубляться в детали?Request.Browser.Capabilities [ "51Degrees.mobi"]?Или 51degrees переопределяет / обновляет значение Request.Browser.IsMobileDevice для синхронизации с его оценкой браузера?Ясно, что он не переопределяет Request.Browser.ScreenPixelsWidth.

Я открыт для ответов «вы делаете это неправильно, вот лучший способ», если они не предлагают MVC 4 или не включают платное решение.такие как WURFL.

1 Ответ

4 голосов
/ 15 марта 2012

Этот FAQ объясняет, какие свойства Request.Browser переопределяются 51Degrees.mobi.

В очень немногих случаях вам когда-либо понадобится прямой доступ к ключу "51Degrees.mobi".Если свойство было переопределено, получите доступ к нему, как обычно.Если свойство не переопределяется или не покрывается HttpBrowserCapabilities, вы должны использовать имя свойства.Например:

var isTablet = Request.Browser ["IsTablet"];

Список доступных свойств см. В этой ссылке .

Asэто должно переопределить ScreenPixelsWidth. Мне было бы интересно узнать больше о вашей тестовой среде.Так как .NET требует, чтобы значение было числовым, если 51Degrees.mobi не может определить размер (Неизвестно), значение не будет переопределено.

Спасибо, что рассмотрели 51Degrees.mobi.

...