web-dev-qa-db-fra.com

Détection du type de périphérique dans une application Web

Nous avons une application Java dans laquelle nous voulons détecter le type de périphérique (mobile ou de bureau) pour le périphérique qui envoie la demande.

Comment est-ce possible?

24
Rishabh Ohri

Vous devrez lire l'en-tête User-Agent de la demande et décider de cela.

Dans les applications de servlet Vanilla, une façon simple de le faire est la suivante:

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

Vous pouvez obtenir des informations sur le périphérique en analysant l'en-tête http.

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

Vous devriez analyser browserType pour obtenir le type de périphérique

Cela peut aider

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

Vous pourriez obtenir une solution logicielle tierce. Il existe de nombreux logiciels Open Source. J'ai déjà utilisé la solution Java de 51Degrees.mobi avant (et j'ai également travaillé sur leur solution C open source). Suivez ce lien et cliquez sur le bouton de téléchargement. Il est relativement facile de se lever et de courir.

5
Jack

Vous pouvez essayer d'utiliser Spring Mobile . Il existe des classes pratiques pour résoudre ce problème.

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

Vous pouvez essayer cette lib, je pense, yauaa peut détecter une chaîne d'agent utilisateur est quel périphérique/logiciel

https://github.com/nielsbasjes/yauaa

2
Karl Lin

Pour Java, 51Degrees a une API gratuite sur GitHub https://github.com/51Degrees/Java-Device-Detection , elle est régulièrement mise à jour et doit pouvoir couvrir toutes les détentions de base dont vous avez besoin.

Vous trouverez un tutoriel sur l'utilisation de l'API pour la détection du type de périphérique ici https://51degrees.com/Developers/Documentation/APIs/Java-V32/Tutorials/Web-App

Il existe également une version gratuite de Cloud qui propose la propriété DeviceType (si vous voulez plus que simplement IsMobile), vous pouvez trouver les détails à ce sujet sur le site Web 51Degrees. Vous devrez "acheter" le cloud gratuit via le site Web, mais il ne vous demande pas de coordonnées bancaires et est totalement gratuit. Vous pouvez également utiliser JavaScript et toute autre intégration en fonction de vos besoins.

Divulgation: Je travaille chez 51Degrees.

0
Zarwalski

Vous pouvez vérifier le User-Agenten-tête HTTP sur l'objet HttpServletRequest

Réf: http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent

0
jbindel