Подтвердить что ты не робот

Обнаружение типа устройства в веб-приложении

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

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

4b9b3361

Ответ 1

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

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

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
  }
}

Ответ 2

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

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

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

Это может помочь

  public String  getBrowserInfo( String Information )
  {
    String browsername = "";
    String browserversion = "";
    String browser = Information;
    if (browser.contains("MSIE"))
    {
      String subsString = browser.substring(browser.indexOf("MSIE"));
      String info[] = (subsString.split(";")[0]).split(" ");
      browsername = info[0];
      browserversion = info[1];
    } else if (browser.contains("Firefox"))
    {

      String subsString = browser.substring(browser.indexOf("Firefox"));
      String info[] = (subsString.split(" ")[0]).split("/");
      browsername = info[0];
      browserversion = info[1];
    } else if (browser.contains("Chrome"))
    {

      String subsString = browser.substring(browser.indexOf("Chrome"));
      String info[] = (subsString.split(" ")[0]).split("/");
      browsername = info[0];
      browserversion = info[1];
    } else if (browser.contains("Opera"))
    {

      String subsString = browser.substring(browser.indexOf("Opera"));
      String info[] = (subsString.split(" ")[0]).split("/");
      browsername = info[0];
      browserversion = info[1];
    } else if (browser.contains("Safari"))
    {

      String subsString = browser.substring(browser.indexOf("Safari"));
      String info[] = (subsString.split(" ")[0]).split("/");
      browsername = info[0];
      browserversion = info[1];
    }
    return browsername + "-" + browserversion;
  }

Ответ 3

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

Ответ 5

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

https://github.com/nielsbasjes/yauaa

Ответ 6

Для 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 и другую интеграцию в зависимости от ваших требований.

Раскрытие: я работаю на 51Degrees.

Ответ 7

Вы можете попытаться использовать Spring Mobile. Для этого есть удобные классы.

Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
if(currentDevice.isMobile()) { /* Mobile */ }
if(currentDevice.isTablet()) { /* Tablet */ }
if(currentDevice.isNormal()) { /* Desktop */ }