У нас есть приложение на основе Java, в котором мы хотим определить тип устройства (мобильный или рабочий) для устройства, отправляющего запрос.
Как это возможно?
У нас есть приложение на основе Java, в котором мы хотим определить тип устройства (мобильный или рабочий) для устройства, отправляющего запрос.
Как это возможно?
Вам нужно будет прочитать заголовок 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
}
}
Вы можете получить информацию об устройстве, проанализировав заголовок 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;
}
Вы можете получить стороннее программное решение. Там есть много Open Source. Я использовал 51Degrees.mobi Java-решение до сих пор (а также работал над решением с открытым исходным кодом C). Следуйте по этой ссылке и нажмите кнопку загрузки. Относительно легко вставать и работать.
Вы можете проверить User-Agent
HTTP-заголовок на объекте HttpServletRequest
.
Ссылка: http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent
Вы можете попробовать эту библиотеку, я думаю, yauaa может обнаружить строку пользовательского агента, какое устройство/программное обеспечение
Для 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.
Вы можете попытаться использовать Spring Mobile. Для этого есть удобные классы.
Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
if(currentDevice.isMobile()) { /* Mobile */ }
if(currentDevice.isTablet()) { /* Tablet */ }
if(currentDevice.isNormal()) { /* Desktop */ }