ASP.NET MVC 3 простое и надежное обнаружение мобильного устройства: использовать 51degrees.mobi или перейти на родной?

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

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

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

Отсутствует 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"]? Или 51 градусов переопределяет / обновляет значение Request.Browser.IsMobileDevice для синхронизации с его оценкой браузера? Ясно, что он не переопределяет Request.Browser.ScreenPixelsWidth.

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

1 ответ

Решение

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

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

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

Смотрите эту ссылку для получения списка доступных свойств.

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

Спасибо за рассмотрение 51Degrees.mobi.

Другие вопросы по тегам