2008-09-26 2 views
56

Мы начинаем идти по пути поддержки мобильных браузеров для электронной коммерции e-commerce (Java/Servlet based). Конечно, есть много решений, но мне кажется, что краеугольным камнем является надежное обнаружение мобильных браузеров и принятие решений относительно контента, который будет возвращен соответствующим образом. Есть ли стандартный способ сделать это определение (быстро) на основе HTTP-запроса и в идеале получить больше информации о данном браузере и устройстве, делающем запрос (размер экрана, возможности html и т. Д.?).Стандартный способ обнаружения мобильных браузеров в веб-приложении на основе HTTP-запроса

Я также хотел бы получить дополнительную информацию, которая была бы полезной для тех, кто пошел по этому пути, взяв на себя широкомасштабное предприятие webapp и архитектуру поддержки мобильных браузеров со стороны разработчиков.

[edit] Я, конечно, понимаю заголовок запроса, и информация о базе данных стандартных пользовательских агентов - отличная помощь. Для тех, кто говорит о «других» свойствах заголовка запроса, если бы вы могли включить аналогичное стандартизованное имя/ресурс значений, что было бы большой помощью.

[изменить] Несколько пользователей предложили решения, связанные с вызовом по проводке, на некоторые веб-службы, которые будут выполнять обнаружение. Хотя я уверен, что это работает, это нехорошее решение для сайта электронной коммерции предприятия по двум причинам: 1) скорость. Вызов по проводу для каждого запроса страницы третьей стороне будет иметь большие последствия для производительности. 2) зависимость/законность. Мы свяжем время отклика и ключевые функциональные возможности нашего веб-сайта, что ужасно по юридическим причинам и причинам риска.

+0

Вы можете увидеть некоторые идеи в http://stackoverflow.com/questions/6844020/way-to -do-content-adapt-to-mobile – 2011-08-06 14:56:39

ответ

42

Не было бы стандартным способом проверить агент пользователя? Вот database of user agents, который вы можете использовать для обнаружения мобильных браузеров.

+2

Я не понимал, что для них существует активная ссылка. Благодарю. – Peter 2008-10-02 05:43:39

+2

WURFL для java - это беспорядок. Удачи найти данные привязки Java для загрузки. – 2011-05-24 00:40:56

+1

WURFL - это борода. И 15 МБ XML? Но он делает то, что говорит. – boring 2012-02-01 07:13:34

0

Вы должны проверить строку агента пользователя с предварительно определенным списком, like this one

1

Вы получите большую часть информации, такой как браузер, устройство, принятые языки, принятые форматы и т. Д. Из заголовка запроса. Указанный выше пользовательский агент является частью заголовка запроса.

6

Пока вы можете обнаружить мобильный браузер через его пользовательский агент, война браузера на платформе ПК показала, что обнюхивание пользовательских агентов на самом деле не очень хорошо.

Что в идеале должно быть сделано, так это то, что конкретные стили должны применяться на основе типа носителя или что другой ответ должен быть отправлен на основе заголовка, отличного от пользовательского агента, - например, заголовок Accept-header, который сообщает, какой вид контента что браузер предпочитает.

В настоящее время, возможно, этого достаточно, чтобы закодировать сайт, который работает с iPhone и Opera с помощью браузера, - но Googles Android придет в любую минуту, и есть много других мобильных телефонов, у которых будут функции браузера, близкие к iPhone. в ближайшем будущем, и было бы напрасно разрабатывать мобильный веб-сайт, который не поддерживал бы такие устройства, насколько это возможно, с нуля.

20

@ Ответ Дэвида упоминается с использованием WURFL - это, вероятно, ваш лучший вариант. Однако следует помнить, что показатель успеха обычно составляет около 60% (от моего опыта и опыта других). С носителями, постоянно меняющими UA и количеством существующих профилей устройств (60 000+?), Нет пуленепробиваемого способа получить нужные вам нужные данные.

Просто немного предупреждайте, прежде чем полагаться на устройство DB.Я попытался бы открыть параметры пользователя, разрешив им изменять параметры сеанса в случае, если я догадался неправильно.

0

Вы можете использовать веб-сервис для обнаружения мобильных браузеров, таких как handsetdetection.com.

2

я предложить бесплатную систему обнаружения, которая основана на UAProf и агента пользователя: http://www.mobilemultimedia.be UAProf должен быть первичным ключом для обнаружения, когда он доступен, как правило, есть несколько агентов пользователей для одной и той же UAProf. Если вы хотите управлять этим самостоятельно, вам следует перейти на Wurfl, потому что вы можете загрузить всю базу данных и самостоятельно управлять ею.

0

Дело в том, что просто полагаться на useragent недостаточно, чтобы обнаружить мобильные браузеры.

Несомненно, лет назад вы могли искать его для определенных строк и догадываться, что это была Nokia или что-то в этом роде, но теперь там так много телефонов, и многие из них притворяются, что это не что-то еще сложный.

Я нашел отличный сайт в link text, который основан на том же решении, что и MTV для всех мобильных сайтов. Он ДЕЙСТВИТЕЛЬНО хорош, так как имеет независимый от устройства язык разметки, но, что более важно, он предлагает вызов webservice для isMobileDevice().

Просто посмотрите в руководстве, а затем «как это работает».

Я использовал его для своих клиентов и еще не нашел мобильный браузер, который он не обнаруживает точно. Совершенно ослепительно!

2

Когда у меня была подобная необходимость в последнее время, я нашел this code, который использует HTTP_X_WAP_PROFILE, HTTP_ACCEPT и HTTP_USER_AGENT идентифицировать браузер как мобильные или не мобильный. Это PHP, но может быть легко преобразован во все, что вам нужно (я реализовал его в VBScript для классического ASP).

Как ни странно, оказалось, что я не в конечном итоге с помощью кода, потому что мы решили предоставить конкретные адреса для мобильных и не мобильных пользователей, но это, конечно, работал, когда я тестировал его ...

5

После нескольких дней поиска правильного способа обнаружения мобильного устройства я решил сохранить его простым [глупым], и я поставлю кнопку «Мобильный сайт устройства» на моей индексной странице ... это всего лишь один клик!

8

Вы можете использовать Modernizer обнаружить способности браузера

0

Просто натыкался Device and feature detection on the mobile web с этим содержимым:

  1. Использование функции обнаружения устройств и функций для улучшения пользовательского опыта на мобильном веб
  2. Введение в обнаружение устройств
  3. Подходы к мобильному дизайну сайтов
    1. ничего не делать
    2. Обеспечение родового мобильных устройств сайт
    3. Проектирование с мобильных и адаптации в виду
  4. Содержание адаптации и устройства группировки стратегии
    1. Устройство группировки
    2. Адаптация контента
  5. Мини mising необходимости адаптации в первую очередь
  6. Общих подходов к обнаружению устройства
    1. сторона сервера адаптация
    2. стороны клиента адаптация
    3. сторона сервера Агент пользователя (UA) и поиск заголовка
    4. сервер -side UA в сочетании с поиском базы данных устройства
    5. Обнаружение профилей пользователей на стороне сервера (UAProf)
    6. Обнаружение на основе технологии JavaScript
    7. типы CSS медиа
    8. CSS медиа запросов
  7. Дополнительные лучшие практики
    1. Перенаправление + руководство ссылку
    2. целевой страницы + руководство ссылку
  8. Загружаемые страницы образца
1

ОК, вот очень простой ответ - как насчет того, чтобы позволить пользователю решить? на ваш логин к вашему ap, укажите ссылку на мобильный сайт. на мобильном сайте, предоставите ссылку «вернуться на главный сайт» - попробуйте www.fazolis.com на своем мобильном устройстве - они хорошо справляются с этим.

затем, по ссылке на мобильный сайт с сайта браузера, зарегистрируйте свой «голос» и их агент пользователя. Вы можете создать свой собственный надежный список ВАШИ клиентов, которым нужен мобильный сайт. Используйте это в соответствии со спецификациями на размер экрана для этих мобильных устройств, и вы можете создать довольно хорошую логику для удовлетворительного пользовательского опыта. Я НИКОГДА не отправлял бы в сетевой источник что-то столь же элементарное, как это.

О, и на вашем «мобильном сайте» - если вы хорошо пишете свой ap, вы должны иметь возможность представить один сайт как для мобильного, так и для браузера, а не для записи двух отдельных наборов страниц. Просто о чем подумать - это стоит лишней мысли и усилий, чтобы сэкономить время позже.

3

Следующая облегченный конфигурация Apache делает очень хорошую работу и запоминает предпочтения пользователя, если они предпочитают версию PC

<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

1

Самый простой способ создать массив с регулярными тэгов, связанных с мобильными браузерами. По крайней мере, большинство мобильных пользовательских агентов должны иметь слово mobile, mini, nokia, java ME, android, iphone, мобильная ОС и т. Д. Если какой-либо из них совпадает с пользовательским агентом, используя php strpos, напечатайте мобильную кнопку вверху страницы , Оставьте пользователя выбрать. Мне нравится полный сайт, потому что мой мобильный браузер дает мне тот же опыт, за исключением того, что мне нужно масштабировать или прокручивать большую часть времени.

0

вы можете использовать WURFL API-интерфейсы для обнаружения типа устройства

http://wurfl.sourceforge.net/wurfl_schema.php 

или Modernizer обнаружить способности браузера