Стандартный способ обнаружения мобильных браузеров в веб-приложении на основе http-запроса
мы начинаем идти по пути поддержки мобильного браузера для корпоративного веб-приложения электронной коммерции (на основе Java/сервлетов). Конечно, есть много решений, которые нужно принять, но мне кажется, что краеугольным камнем является возможность надежно обнаруживать мобильные браузеры и принимать решения о контенте, который будет возвращен соответственно. Есть ли стандартный способ сделать это определение (быстро) на основе http-запроса и в идеале получить дополнительную информацию о данном браузере и устройстве, создающем запрос (размер экрана, возможности html и т. д.?).
Я также был бы признателен за любую дополнительную информацию, которая была бы полезна от кого-то, кто пошел по этому пути принятия существующего крупномасштабного корпоративного веб-приложения и архитектора из поддержки мобильных браузеров со стороны разработки.
[edit] я, конечно, понимаю заголовок запроса, и информация о базе данных стандартных пользовательских агентов является большим подспорьем. Для тех, кто говорит о "другом" заголовке запроса свойства, если бы вы могли включить аналогичное стандартизированное имя / ресурс значений, это было бы большой помощью.
[edit] несколько пользователей предложили решения, которые включают вызов по проводу к некоторой веб-службе, которая будет выполнять обнаружение. Хотя я уверен, что это работает, это не лучшее решение для корпоративного сайта электронной коммерции по двум причинам: 1) скорость. Вызов по проводу для каждого запроса страницы к третьей стороне будет иметь огромные последствия для производительности. 2) зависимость/юридические. Мы свяжите время отклика нашего сайта и ключевую функциональность с их сервисом, что ужасно по юридическим и рисковым причинам.
19 ответов:
не будет ли стандартным способом проверить пользовательский агент? Вот это база данных пользовательских агентов можно использовать для обнаружения мобильных браузеров.
ответ@David упомянул использование WURFL - что, вероятно, ваш лучший вариант. Будьте предупреждены, однако, показатель успеха обычно составляет около 60% (от моего и другого опыта). С носителями постоянно меняется UA и количество профилей устройств, которые существуют (60,000+ ?), нет пуленепробиваемого способа получить все нужные вам данные.
просто немного предупреждения, прежде чем сильно полагаться на устройство DB. Я бы попытался сохранить параметры пользователя открытыми, позволяя им меняться параметры сеанса в случае, если я угадал неправильно.
можно использовать модернизатор для обнаружения возможностей браузера
хотя вы можете обнаружить мобильный браузер через его пользовательский агент, война браузеров на платформе ПК показала, что нюхать пользовательские агенты на самом деле не так уж и хорошо.
что в идеале должно быть сделано, так это то, что определенные стили должны применяться на основе типа носителя или что другой ответ должен быть отправлен на основе заголовка, отличного от пользовательского агента, например, Accept - header, который сообщает, какой тип контента предпочитает браузер.
сейчас может быть достаточно, чтобы закодировать сайт, который работает с 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/ [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 и User agent: http://www.mobilemultimedia.be UAprof должен быть первичным ключом для обнаружения, когда он доступен, поскольку обычно существует несколько пользовательских агентов для одного и того же uaprof. Если вы хотите управлять этим самостоятельно, вы должны пойти на Wurfl, потому что вы можете загрузить всю базу данных и управлять ею локально самостоятельно.
когда у меня была подобная потребность в последнее время, я нашел код использует
HTTP_X_WAP_PROFILE
,HTTP_ACCEPT
иHTTP_USER_AGENT
для идентификации браузера как мобильного или немобильного. Это PHP, но его можно довольно легко преобразовать в то, что вам нужно (я реализовал его в VBScript для классического ASP).как ни странно, оказалось, что я не использовал код, потому что мы решили предоставить конкретные URL-адреса для мобильных и немобильных пользователей, но это, безусловно, сработало, когда я его тестировал ...
вы получите большую часть информации, такие как браузер, устройств, принятых языки, форматы и т. д. Из заголовка запроса. Агент пользователя, упомянутый выше, является частью заголовка запроса.
ок, здесь очень простой ответ - как насчет того, чтобы позволить пользователю решить? при входе в свою точку доступа укажите ссылку на мобильный сайт. на мобильном сайте укажите ссылку "вернуться на основной сайт" - попробуйте www.fazolis.com на вашем мобильном устройстве-они делают хорошую работу этого.
затем, по ссылке на мобильный сайт с сайта браузера, зарегистрируйте свой "голос" и свой пользовательский агент. Вы можете построить свой собственный надежный список код клиенты, которые хотят, чтобы мобильный сайт. Использовать это связано со спецификациями размера экрана для этих мобильных устройств, и вы можете построить довольно хорошую логику для удовлетворительного пользовательского опыта. Я бы никогда не отправил сообщение в сетевой источник для чего-то столь элементарного, как это.
О, и на вашем "мобильном сайте" - если вы пишете свой ap семантически хорошо, то вы должны быть в состоянии представить один сайт для мобильных устройств и браузера против необходимости писать два отдельных набора страниц. Просто есть о чем подумать - это стоит дополнительных мыслей и попытка сэкономить время позже.
Я не вижу его здесь, но другой вариант, который я рассматриваю в настоящее время, - это www.detectmobilebrowser.com
самый простой способ-создать массив с обычными тегами, связанными с мобильными браузерами. По крайней мере, большинство мобильных пользовательских агентов должны иметь слово mobile, mini, nokia, java ME, android, iphone, mobile OS и т. д. Если какой-либо из них соответствует агенту пользователя, используя PHP strpos, напечатайте мобильную кнопку в верхней части страницы. Оставить пользователю выбор. Я люблю полный сайт, потому что мой мобильный браузер дает мне тот же опыт, за исключением того, что мне нужно увеличить или прокрутить большую часть времени.
вам нужно будет проверить строку агента пользователя с ранее определенным списком,вот так
дело в том, что просто полагаясь на useragent не достаточно хорошо, чтобы обнаружить мобильные браузеры.
конечно, несколько лет назад вы могли бы искать в нем определенные строки и догадываться, что это Nokia или что-то еще, но теперь там так много телефонов, и так много, которые притворяются вещами, что они не являются чем-то более сложным.
Я нашел отличный сайт текст ссылкикоторый основан на том же решении, что MTV использовать для всех их мобильные веб-сайты. Это действительно хорошо, поскольку у него есть независимый от устройства язык разметки, но что еще более важно, они предлагают вызов webservice для isMobileDevice().
просто посмотрите в руководстве, то "как это работает".
Я использую его для своих сайтов клиентов и еще не нашел мобильный браузер, который он не обнаруживает точно. Совершенно ослепительно!
просто наткнулся обнаружение устройств и функций в мобильном интернете С этим содержанием:
- использование обнаружения устройств и функций для улучшения пользовательского интерфейса в мобильном интернете
- введение в обнаружение устройства
- подходы к дизайну мобильных сайтов
- ничего
- предоставление общего мобильного сайта
- проектирование с мобильным и адаптацией в виду
- содержание стратегии адаптации и группировки устройств
- устройство группирования
- адаптация контента
- минимизация необходимости адаптации в первую очередь
- общие подходы к обнаружению устройств
- адаптация на стороне сервера
- адаптация на стороне клиента
- серверный пользовательский агент (UA) и поиск заголовка
- строка UA на стороне сервера в сочетании с поиском базы данных устройства
- на стороне сервера Профиль агента пользователя (UAProf) обнаружения
- обнаружение на основе технологии JavaScript
- CSS media types
- CSS media queries
- дополнительные рекомендации
- перенаправление + ручная ссылка
- целевая страница + ручная ссылка
- загружаемый образец страницы
вы можете использовать API WURFL для определения типа устройства
http://wurfl.sourceforge.net/wurfl_schema.php
или модернизатор для обнаружения возможностей браузера