Стандартный способ определения мобильных браузеров в веб-приложении на основе запроса http
Мы начинаем идти по пути поддержки мобильных браузеров для веб-приложения корпоративной электронной коммерции (на основе Java/Servlet). Конечно, нужно принять много решений, но мне кажется, что краеугольным камнем является способность надежно обнаруживать мобильные браузеры и принимать решения о контенте, который должен быть возвращен соответствующим образом. Существует ли стандартный способ сделать это определение (быстро) на основе http-запроса и в идеале собрать больше информации о данном браузере и устройстве, выполняющем запрос (размер экрана, возможности html и т. Д.?).
Я также был бы признателен за любую дополнительную информацию, которая была бы полезна кому-то, кто пошел по этому пути, взяв существующее крупномасштабное корпоративное веб-приложение и разработав поддержку мобильных браузеров со стороны разработки.
[edit] Я, конечно, понимаю заголовок запроса, и информация о базе данных стандартных пользовательских агентов очень полезна. Для тех, кто говорит о "других" свойствах заголовка запроса, если бы вы могли включить аналогичное стандартизированное имя / ресурс значений, это было бы большой помощью.
[править] Несколько пользователей предложили решения, которые включают вызов по проводной связи с каким-либо веб-сервисом, который будет выполнять обнаружение. Хотя я уверен, что это работает, оно не является хорошим решением для сайта электронной коммерции предприятия по двум причинам: 1) скорость. Вызов по сети для каждого запроса страницы к третьей стороне будет иметь огромные последствия для производительности. 2) зависимость / законность. Мы привязали бы время отклика нашего веб-сайта и ключевые функции к их обслуживанию, что ужасно по юридическим причинам и из-за рисков.
19 ответов
Разве стандартным способом не будет проверка пользовательского агента? Вот база данных пользовательских агентов, которую вы можете использовать для обнаружения мобильных браузеров.
@ Ответ Дэвида упоминается с использованием WURFL - это, вероятно, ваш лучший вариант. Будьте предупреждены, однако, вероятность успеха обычно составляет около 60% (из моего и чужого опыта). Поскольку операторы постоянно меняют UA и количество существующих профилей устройств (более 60000?), Нет пуленепробиваемого способа получить все нужные данные.
Просто небольшое предупреждение, прежде чем сильно полагаться на БД устройства. Я бы постарался оставить параметры пользователя открытыми, позволив им изменять параметры сеанса на случай, если я угадаю неправильно.
Вы можете использовать Modernizer для определения возможностей браузера
После нескольких дней поиска правильного способа обнаружения мобильного устройства я решил сделать его простым [глупым], и я добавлю кнопку "Сайт мобильного устройства" на мою страницу индекса… это всего лишь один клик!
Хотя вы могли обнаружить мобильный браузер через его пользовательский агент, война браузеров на платформе ПК показала, что прослушивание пользовательских агентов на самом деле не такая уж хорошая вещь.
В идеале следует сделать так, чтобы конкретные стили применялись на основе типа мультимедиа или чтобы другой ответ отправлялся на основе заголовка, отличного от пользовательского агента, такого как заголовок Accept, который сообщает, какой тип контента предпочитает браузер.,
Прямо сейчас этого может быть достаточно, чтобы кодировать сайт, который работает с iPhone и Opera, через браузер, сниффинг - но Googles Android появится в любую минуту, и есть много других мобильных телефонов, которые будут иметь функции браузера, близкие к iPhone в ближайшем будущем. и было бы бесполезно разрабатывать мобильный веб-сайт, который бы не поддерживал эти устройства с нуля.
Обнаружение мобильных браузеров - фрагменты на разных языках программирования.
Следующая легкая конфигурация Apache делает довольно хорошую работу и запоминает пользовательские настройки, если они предпочитают версию для ПК
<VirtualHost (your-address-binding)>
(your-virtual-host-configuration)
RewriteEngine On
RewriteCond %{QUERY_STRING} !ui=pc
RewriteCond %{HTTP_COOKIE} !ui=pc
RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|ipod|ipad|android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|palm-|palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|kindle|lg-|lge|mot-|motorola|nintendo ds|nitro|playstation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC]
RewriteRule /(.*) http://bemoko.com/$1 [L]
RewriteCond %{QUERY_STRING} "ui=pc"
RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/]
RewriteCond %{QUERY_STRING} "ui=default"
RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/]
</VirtualHost>
Дополнительная информация об этом @ http://bemoko.com/training.team/help/team/pc-to-mobile-redirect
Я предлагаю бесплатную систему обнаружения, основанную на uaprof и пользовательском агенте: http://www.mobilemultimedia.be/ UAprof должен быть основным ключом для обнаружения, когда он доступен, поскольку обычно для одного и того же uaprof обычно существует несколько пользовательских агентов. Если вы хотите справиться с этим самостоятельно, вам следует обратиться к Wurfl, потому что вы можете загрузить всю базу данных и управлять ею локально самостоятельно.
Когда у меня недавно была похожая потребность, я нашел этот код, который использует HTTP_X_WAP_PROFILE
, HTTP_ACCEPT
, а также HTTP_USER_AGENT
идентифицировать браузер как мобильный или немобильный. Это PHP, но его можно довольно легко преобразовать во что угодно (я реализовал его в VBScript для классического ASP).
По иронии судьбы, оказалось, что я не стал использовать код, потому что мы решили предоставить конкретные URL-адреса для мобильных и не мобильных пользователей, но это, безусловно, сработало, когда я тестировал его...
Вы получите большую часть информации, например, от браузера, устройства, принятых языков, принятых форматов и т. Д. Из заголовка запроса. Упомянутый выше пользовательский агент является частью заголовка запроса.
Хорошо, вот очень простой ответ - как насчет того, чтобы позволить пользователю решать? при входе в свой аккаунт предоставьте ссылку на мобильный сайт. на мобильном сайте предоставьте ссылку "назад на главный сайт" - попробуйте www.fazolis.com на своем мобильном устройстве - они отлично справятся с этой задачей.
Затем, перейдя по ссылке на мобильный сайт с сайта браузера, зарегистрируйте свой "голос" и своего агента пользователя. Вы можете создать свой собственный надежный список ваших клиентов, которые хотят мобильный сайт. Используйте это в браке для спецификации размера экрана для этих мобильных устройств, и вы можете создать довольно неплохую логику для удовлетворительного взаимодействия с пользователем. Я НИКОГДА не публиковал бы в сетевом источнике что-то столь элементарное, как это.
Да, и на вашем "мобильном сайте" - если вы пишете свой семантически хорошо, то вы должны быть в состоянии представить один сайт для мобильных устройств и для браузера вместо того, чтобы писать два отдельных набора страниц. Просто о чем подумать - это стоит дополнительных мыслей и усилий, чтобы сэкономить время позже.
Я не могу видеть это опубликованным здесь, но другой вариант, который я рассматриваю в настоящее время, является htt p://www.detectmobilebrowser.com/
Самый простой способ - создать массив с обычными тегами, связанными с мобильными браузерами. По крайней мере, у большинства мобильных пользовательских агентов должно быть слово mobile, mini, nokia, java ME, android, iphone, мобильная ОС и т. Д. Если любое из них сопоставляется с пользовательским агентом с помощью php strpos, напечатайте мобильную кнопку в верхней части страницы., Оставьте пользователя на выбор. Я люблю полный сайт, потому что мой мобильный браузер дает мне тот же опыт, за исключением того, что мне нужно увеличивать или прокручивать большую часть времени.
Вы можете использовать WURFL API для определения типа устройства
http://wurfl.sourceforge.net/wurfl_schema.php
или Модернизатор для определения возможностей браузера
Вам нужно будет проверить строку пользовательского агента с ранее определенным списком, как этот
Дело в том, что просто полагаться на useragent недостаточно для обнаружения мобильных браузеров.
Конечно, много лет назад вы могли искать его по определенным строкам и догадываться, что это Nokia или что-то в этом роде, но сейчас существует так много телефонов, и так много, которые притворяются вещами, которые не являются чем-то более необходимым.
Я нашел отличный сайт по ссылочному тексту, который основан на том же решении, которое MTV использует для всех своих мобильных веб-сайтов. Он ДЕЙСТВИТЕЛЬНО хорош, так как имеет независимый от устройства язык разметки, но что более важно, он предлагает вызов веб-службы для isMobileDevice().
Просто посмотрите в руководстве "как это работает".
Я использовал его для сайтов своих клиентов, но пока не нашел мобильный браузер, который бы он не обнаруживал точно. Совершенно ослепительно!
Вы можете использовать веб-сервис для обнаружения мобильного просмотра, например handsetdetection.com.
Просто запустил обнаружение устройств и функций в мобильном Интернете со следующим содержимым:
- Использование обнаружения устройств и функций для улучшения взаимодействия с пользователем в мобильном Интернете
- Введение в обнаружение устройства
- Подходы к дизайну мобильного сайта
- Ничего не делать
- Предоставление общего мобильного сайта
- Проектирование с учетом мобильности и адаптации
- Стратегии адаптации контента и группировки устройств
- Группировка устройств
- Адаптация контента
- Минимизация необходимости адаптации в первую очередь
- Общие подходы к обнаружению устройства
- Серверная адаптация
- Клиентская адаптация
- Серверный пользовательский агент (UA) и поиск заголовка
- Строка UA на стороне сервера в сочетании с поиском в базе данных устройства
- Обнаружение профилей пользовательских агентов на стороне сервера (UAProf)
- Обнаружение на основе технологии JavaScript
- Типы медиа CSS
- CSS медиа запросы
- Дополнительные лучшие практики
- Перенаправление + ручная ссылка
- Целевая страница + ручная ссылка
- Загружаемый образец страницы