Определение типа устройства в веб-приложении
У нас есть приложение на основе 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 может обнаружить строку агента пользователя, какое устройство / программное обеспечение
вы можете попробовать использовать Или. Есть удобные классы, чтобы решить эту проблему.
Device currentDevice = DeviceUtils.getCurrentDevice(servletRequest);
if(currentDevice.isMobile()) { /* Mobile */ }
if(currentDevice.isTablet()) { /* Tablet */ }
if(currentDevice.isNormal()) { /* Desktop */ }
для 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.