Определение типа устройства в веб-приложении - PullRequest
25 голосов
/ 15 декабря 2011

У нас есть приложение на основе Java, в котором мы хотим определить тип устройства (мобильное или настольное) для устройства, отправляющего запрос.

Как это возможно?

Ответы [ 7 ]

38 голосов
/ 15 декабря 2011

Вам придется прочитать заголовок User-Agent из запроса и принять решение об этом.

В приложениях vanilla servlet грубый способ сделать это:

public void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
  if(request.getHeader("User-Agent").indexOf("Mobile") != -1) {
    //you're in mobile land
  } else {
    //nope, this is probably a desktop
  }
}
13 голосов
/ 15 декабря 2011

Вы можете получить информацию об устройстве, проанализировав заголовок http

String browserType = request.getHeader("User-Agent");

. Вам нужно проанализировать browserType, чтобы получить тип устройства

.

5 голосов
/ 17 сентября 2012

Вы можете получить стороннее программное решение.Есть много открытых источников там.Я использовал 51Degrees.mobi Java-решение до сих пор (и также работал над их C-решением с открытым исходным кодом).Перейдите по этой ссылке и нажмите кнопку загрузки.Относительно легко начать работу.

2 голосов
/ 14 января 2018

Можно попробовать Spring Mobile . Для этого есть удобные классы.

Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
if(currentDevice.isMobile()) { /* Mobile */ }
if(currentDevice.isTablet()) { /* Tablet */ }
if(currentDevice.isNormal()) { /* Desktop */ }
2 голосов
/ 10 апреля 2017

Вы можете попробовать эту библиотеку. Я думаю, yauaa может определить строку пользовательского агента, какое устройство / программное обеспечение

https://github.com/nielsbasjes/yauaa

0 голосов
/ 12 апреля 2017

Для Java 51Degrees имеет бесплатный API на GitHub https://github.com/51Degrees/Java-Device-Detection,, он регулярно обновляется и должен иметь возможность покрывать все основные задержания, которые вам нужны.

Здесь есть руководство по использованию API для определения типа устройства https://51degrees.com/Developers/Documentation/APIs/Java-V32/Tutorials/Web-App

Существует также бесплатная облачная версия, которая предлагает свойство DeviceType (если вы хотите больше, чем просто IsMobile), подробности об этом можно найти на веб-сайте 51Degrees. Вам нужно будет «купить» бесплатное облако через веб-сайт, но оно не запрашивает банковские реквизиты и совершенно бесплатно. Вы также можете использовать JavaScript и другую интеграцию в зависимости от ваших требований.

Раскрытие информации: я работаю на 51 градус.

0 голосов
/ 15 декабря 2011

Вы можете проверить заголовок HTTP User-Agent на объекте HttpServletRequest.

Ссылка: http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent

...