Ответ 1
Не было бы стандартным способом проверить агент пользователя? Здесь база данных пользовательских агентов, которую вы можете использовать для обнаружения мобильных браузеров.
Мы начинаем идти по пути поддержки мобильного браузера для электронной коммерции e-commerce (Java/Servlet). Конечно, есть много решений, но мне кажется, что краеугольным камнем является надежное обнаружение мобильных браузеров и принятие решений относительно контента, который будет возвращен соответствующим образом. Есть ли стандартный способ сделать это определение (быстро) на основе http-запроса и в идеале получить больше информации о данном браузере и устройстве, делающем запрос (размер экрана, возможности html и т.д.?).
Я также был бы признателен за любую дополнительную информацию, которая была бы полезной для тех, кто пошел по этому пути, взяв существующий крупный корпоративный webapp и архитектуру поддержки мобильных браузеров со стороны разработки.
[edit] Я, конечно, понимаю заголовок запроса, и информация о базе данных стандартных пользовательских агентов - отличная помощь. Для тех, кто говорит об "других" свойствах заголовка запроса, если вы могли бы включить аналогичное стандартизованное имя/ресурс значений, которое было бы большой помощью.
[edit] Несколько пользователей предложили решения, которые связаны с вызовом по проводке на некоторые веб-службы, которые будут выполнять обнаружение. Хотя я уверен, что это работает, это нехорошее решение для сайта электронной коммерции предприятия по двум причинам: 1) скорость. Вызов по проводу для каждого запроса страницы третьей стороне будет иметь большие последствия для производительности. 2) зависимость/законность. Мы привязываем время отклика нашего веб-сайта и ключевые функциональные возможности для их обслуживания, что ужасно по юридическим причинам и причинам риска.
Не было бы стандартным способом проверить агент пользователя? Здесь база данных пользовательских агентов, которую вы можете использовать для обнаружения мобильных браузеров.
@Ответ на David, упомянутый с использованием WURFL - это, вероятно, ваш лучший вариант. Однако следует помнить, что показатель успеха обычно составляет около 60% (от моего и другого опыта). Когда перевозчики постоянно меняют UA и количество существующих профилей устройств (60 000+?), Нет пуленепробиваемого способа получить нужные вам нужные данные.
Просто немного предупредить, прежде чем полагаться на БД устройства. Я бы попытался сохранить открытые параметры пользователя, разрешив им изменять параметры сеанса в случае, если я догадался, что неправильно.
Вы можете использовать Модернизатор для обнаружения возможностей браузера.
Пока вы можете обнаружить мобильный браузер через него, пользовательский агент, браузер войны на платформе ПК показал, что обнюхивание пользовательских агентов на самом деле не очень хорошо.
Что в идеале должно быть сделано, так это то, что конкретные стили должны применяться на основе типа носителя или что другой ответ должен быть отправлен на основе заголовка, отличного от пользовательского агента, - например, заголовок Accept-header, который сообщает, какой вид контента, который браузер предпочитает.
В настоящий момент может быть достаточно, чтобы закодировать сайт, который работает с iPhone, и Opera с помощью браузера, - но Googles Android придет в любую минуту, и есть много других мобильных телефонов, которые будут иметь функциональность браузера рядом с iPhone в в ближайшем будущем, и это будет пустой тратой для разработки мобильного сайта, который не поддерживает эти устройства так хорошо, как возможно с нуля.
После нескольких дней поиска правильного способа обнаружения мобильного устройства я решил сохранить его простым [глупым], и я поставлю кнопку "Мобильный сайт устройства" на моей индексной странице.... это всего лишь один клик прочь!!
Эта статья (и ее follow-up) кажется приятным.
Обнаружение мобильных браузеров - фрагменты на разных языках программирования.
Следующая легкая конфигурация 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-адреса для мобильных и немобильных пользователей, но он, безусловно, работал, когда я его тестировал...
Вы получите большую часть информации, такой как браузер, устройство, принятые языки, принятые форматы и т.д. из заголовка запроса. Указанный выше пользовательский агент является частью заголовка запроса.
ОК, вот очень простой ответ - как насчет того, чтобы позволить пользователю решить? на ваш логин к вашему ap, укажите ссылку на мобильный сайт. на мобильном сайте, дайте ссылку "вернуться на главный сайт" - попробуйте www.fazolis.com на мобильном устройстве - они хорошо справляются с этим.
затем, по ссылке на мобильный сайт с сайта браузера, зарегистрируйте свой "голос" и их пользовательский агент. Вы можете создать свой собственный надежный список ВАШИХ клиентов, которым нужен мобильный сайт. Используйте это в соответствии со спецификациями на размер экрана для этих мобильных устройств, и вы можете создать довольно хорошую логику для удовлетворительного пользовательского опыта. Я НИКОГДА не отправлял бы в сетевой источник что-то столь же элементарное, как это.
О, и на вашем "мобильном сайте" - если вы хорошо пишете ap apantically, то вы должны иметь возможность представить один сайт как для мобильного, так и для браузера, а не для записи двух отдельных наборов страниц. Просто о чем подумать - это стоит лишней мысли и усилий, чтобы сэкономить время позже.
Я не вижу его здесь, но другой вариант, который я сейчас просматриваю, - www.detectmobilebrowser.com
Самый простой способ - создать массив с регулярными тегами, связанными с мобильными браузерами. По крайней мере, большинство мобильных пользовательских агентов должны иметь слово mobile, mini, nokia, java ME, android, iphone, мобильная ОС и т.д. Если какой-либо из них совпадает с пользовательским агентом, используя php strpos, напечатайте мобильную кнопку вверху страницы, Оставьте пользователя выбрать. Мне нравится полный сайт, потому что мой мобильный браузер дает мне тот же опыт, за исключением того, что мне нужно масштабировать или прокручивать большую часть времени.
Вам нужно будет проверить строку пользовательского агента с ранее определенным списком как этот
вы можете использовать веб-сервис для обнаружения мобильных браузеров, таких как handsetdetection.com.
Дело в том, что просто полагаться на useragent недостаточно для обнаружения мобильных браузеров.
Конечно, несколько лет назад вы могли искать его для определенных строк и догадываться, что это Nokia или что-то в этом роде, но сейчас там так много телефонов, и многие из них притворяются, что это не что-то более сложное необходимо.
Я нашел отличный сайт в текст ссылки, основанный на том же решении, которое MTV использует для всех своих мобильных веб-сайтов. Он ДЕЙСТВИТЕЛЬНО хорош, так как имеет независимый от устройства язык разметки, но, что более важно, он предлагает вызов webservice для isMobileDevice().
Просто загляните в руководство, а затем "как это работает".
Я использую его для своих сайтов клиентов и еще не нашел мобильный браузер, который он не обнаруживает точно. Совершенно ослепительно!
Просто наткнулся на Обнаружение устройств и функций в мобильной сети с этим содержимым:
вы можете использовать WURFL API для определения типа устройства
http://wurfl.sourceforge.net/wurfl_schema.php
или Модернизатор для обнаружения возможностей браузера