it-swarm.com.de

Erkennen des Gerätetyps in einer Webanwendung

Wir haben eine Java-basierte Anwendung, in der wir den Gerätetyp (Mobiltelefon oder Desktop) für das Gerät ermitteln möchten, das die Anforderung sendet.

Wie ist es möglich?

24
Rishabh Ohri

Sie müssen den User-Agent-Header aus der Anfrage lesen und sich dafür entscheiden.

In Vanilla Servlet-Apps ist dies eine grobe Methode:

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

Sie können Geräteinformationen abrufen, indem Sie den http-Header analysieren

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

Sie sollten browserType analysieren, um den Gerätetyp zu erhalten

Das kann helfen

  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

Sie könnten eine Softwarelösung von Drittanbietern erhalten. Es gibt viele Open Source-Programme. Ich habe schon vorhin 51Degrees.mobis Java-Lösung verwendet (und auch an ihrer Open-Source-C-Lösung gearbeitet). Folgen Sie diesem Link und drücken Sie die Download-Taste. Es ist relativ einfach, loszulegen.

5
Jack

Sie können versuchen, Spring Mobile zu verwenden. Es gibt praktische Klassen, um das zu lösen.

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

Sie können diese lib ausprobieren. Ich denke, yauaa kann feststellen, welche Zeichenfolge von Benutzeragenten für welches Gerät/welche Software verwendet wird

https://github.com/nielsbasjes/yauaa

2
Karl Lin

Für Java 51Degrees gibt es eine kostenlose API auf GitHub https://github.com/51Degrees/Java-Device-Detection , es ist regelmäßig undatiert und sollte alle grundlegenden Festnahmen abdecken können, die Sie benötigen.

Ein Tutorial zur Verwendung der API für die Erkennung von Gerätetypen finden Sie hier https://51degrees.com/Developers/Documentation/APIs/Java-V32/Tutorials/Web-App

Es gibt auch eine kostenlose Cloud-Version, die die DeviceType-Eigenschaft bietet (wenn Sie mehr als nur IsMobile wünschen), finden Sie die Details dazu auf der 51Degrees-Website. Sie müssen die kostenlose Cloud über die Website "erwerben", sie werden jedoch nicht nach Bankdaten gefragt und sind völlig kostenlos. Je nach Ihren Anforderungen können Sie auch JavaScript und andere Integrationen verwenden.

Offenlegung: Ich arbeite bei 51Degrees.

0
Zarwalski

Sie können den User-AgentHTTP-Header am HttpServletRequest-Objekt überprüfen. 

Ref: http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent

0
jbindel