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

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

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

7 ответов


вам придется прочитать 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
  }
}

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

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

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

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

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

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


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

https://github.com/nielsbasjes/yauaa


вы можете попробовать использовать Или. Есть удобные классы, чтобы решить эту проблему.

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

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


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

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

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

раскрытие информации: я работаю в 51Degrees.