web-dev-qa-db-ja.com

Webアプリケーションでのデバイスタイプの検出

Javaベースのアプリケーションがあり、リクエストを送信しているデバイスのデバイスタイプ(モバイルまたはデスクトップ)を検出します。

どうして可能ですか?

25
Rishabh Ohri

リクエストからUser-Agentヘッダーを読み取り、それを決定する必要があります。

Vanillaサーブレットアプリでは、大まかな方法​​は次のとおりです。

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

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

サードパーティのソフトウェアソリューションを入手できます。オープンソースのものはたくさんあります。 51Degrees.mobi's Java solution を使用しました(また、オープンソースのCソリューションにも取り組んでいます)。そのリンクをたどって、ダウンロードボタンを押します。比較的簡単に起動して実行できます。

5
Jack

Spring Mobile を使用してみてください。それを解決する便利なクラスがあります。

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

このライブラリを試すことができます、yauaaはユーザーエージェント文字列がどのデバイス/ソフトウェアであるかを検出できます

https://github.com/nielsbasjes/yauaa

2
Karl Lin

Java 51DegreesにはGitHubに無料のAPIがあります https://github.com/51Degrees/Java-Device-Detection の場合、定期的に更新され、必要なすべての基本的な拘留をカバーします。

ここにデバイスタイプ検出用のAPIの使用方法のチュートリアルがあります https://51degrees.com/Developers/Documentation/APIs/Java-V32/Tutorials/Web-App

DeviceTypeプロパティを提供する無料のクラウドバージョンもあります(IsMobile以外のものが必要な場合)。51DegreesWebサイトで詳細を確認できます。ウェブサイトから無料のクラウドを「購入」する必要がありますが、銀行の詳細は要求されず、完全に無料です。要件に応じてJavaScriptやその他の統合を使用することもできます。

開示:51Degreesで働いています。

0
Zarwalski

User-AgentHTTPヘッダーHttpServletRequestオブジェクト上。

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

0
jbindel