web-dev-qa-db-ja.com

HTTP要求に基づいてWebアプリケーションでモバイルブラウザを検出する標準的な方法

エンタープライズeコマースwebapp(Java/Servletベース)のモバイルブラウザサポートの道を歩み始めています。もちろん、多くの決定を下す必要がありますが、私にとっては、モバイルブラウザを確実に検出し、それに応じて返されるコンテンツを決定できることが基本であるように思えます。 httpリクエストに基づいてこの決定を(迅速に)行うための標準的な方法があり、理想的には、リクエストを行っている特定のブラウザおよびデバイスに関する詳細情報(画面サイズ、html機能など)を収集します。

また、既存の大規模なエンタープライズwebappを採用し、開発側からモバイルブラウザーサポートを設計するというこの道をたどった人から役立つ補足情報をいただければ幸いです。

[編集]私は確かにリクエストヘッダーを理解しており、標準ユーザーエージェントのデータベースに関する情報は非常に役立ちます。 「その他」のリクエストヘッダープロパティについて話している場合、同様の標準化された名前/値のリソースを含めることができれば大きな助けになります。

[編集]数人のユーザーが、検出を行うWebサービスへのネットワーク経由の呼び出しを含むソリューションを提案しています。これは確かに機能しますが、2つの理由からエンタープライズeコマースサイトに適したソリューションではありません。1)速度。サードパーティへのすべてのページリクエストに対する回線経由の呼び出しは、パフォーマンスに大きな影響を与えます。 2)依存関係/法的。ウェブサイトの応答時間と主要な機能をサービスに結び付けますが、これは法律上およびリスク上の理由で恐ろしいことです。

56
Peter

ユーザーエージェントをチェックするのは標準的な方法ではないでしょうか? ユーザーエージェントのデータベース は、モバイルブラウザの検出に使用できます。

42
David

@Davidの答えはWURFLを使用して言及しました-これはおそらく最良の選択肢です。ただし、成功率は通常約60%です(私の経験や他の経験から)。キャリアが絶えずUAを変更し、存在するデバイスプロファイルの量(60,000+?)に応じて、必要なすべての適切なデータを取得する完全な方法はありません。

デバイスDBに大きく依存する前のほんの少しの警告。私が間違っていると推測した場合に備えて、ユーザーがセッションオプションを変更できるようにすることで、ユーザーのオプションを開いたままにします。

20
jmccartie

Modernizrを使用して、ブラウザの機能を検出できます

8
Adam

ユーザーエージェントを介してモバイルブラウザーを検出できましたが、PCプラットフォームでのブラウザー戦争は、ユーザーエージェントのスニッフィングは実際にはそれほど良いことではないことを示しています。

理想的には、メディアタイプに基づいて特定のスタイルを適用するか、ブラウザが好むコンテンツの種類を伝えるAccept-headerなどのユーザーエージェント以外のヘッダーに基づいて異なる回答を送信する必要があります。 。

現時点では、iPhoneで動作し、Operaブラウザスニッフィングを介して動作するサイトをコーディングするだけで十分かもしれませんが、Google Androidは、近い将来、iPhoneに近いブラウザ機能を持つ他の多くの携帯電話があり、これらのデバイスを最初からpossibelほどサポートしていないモバイルWebサイトを開発するのは無駄です。

6
VoxPelli

モバイルデバイスを検出する正しい方法を何日も探した後、私はそれを単純な[愚かな]にしておくことにしました。インデックスページに[モバイルデバイスサイト]ボタンを配置します。

5
Paul

モバイルブラウザの検出 -さまざまなプログラミング言語のスニペット。

4
ripper234

この記事 (およびその フォローアップ )は素晴らしいようです。

4
Milen A. Radev

次の軽量のApache構成はかなり良い仕事をし、PCバージョンを好む場合はユーザーの好みを覚えています

<VirtualHost (your-address-binding)>   

  (your-virtual-Host-configuration)       

  RewriteEngine On     
  RewriteCond %{QUERY_STRING} !ui=pc
  RewriteCond %{HTTP_COOKIE} !ui=pc
  RewriteCond %{HTTP_USER_AGENT} "^.*(iphone|iPod|ipad|Android|symbian|nokia|blackberry| rim |opera mini|opera mobi|windows ce|windows phone|up\.browser|netfront|Palm-|Palm os|pre\/|palmsource|avantogo|webos|hiptop|iris|kddi|Kindle|lg-|lge|mot-|Motorola|nintendo ds|nitro|PlayStation portable|samsung|sanyo|sprint|sonyericsson|symbian).*$" [NC,OR]

  RewriteCond %{HTTP_USER_AGENT} "^(alcatel|audiovox|bird|coral|cricket|docomo|edl|huawei|htc|gt-|lava|lct|lg|lynx|mobile|lenovo|maui|micromax|mot|myphone|nec|nexian|nook|pantech|pg|polaris|ppc|sch|sec|spice|tianyu|ustarcom|utstarcom|videocon|vodafone|winwap|zte).*$" [NC] 

  RewriteRule /(.*) http://bemoko.com/$1 [L]

  RewriteCond %{QUERY_STRING} "ui=pc"
  RewriteRule ^/ - [CO=ui:pc:(your-cookie-domain):86400:/]
  RewriteCond %{QUERY_STRING} "ui=default"
  RewriteRule ^/ - [CO=ui:default:(your-cookie-domain):86400:/]
</VirtualHost>

この詳細については、@ http://bemoko.com/training.team/help/team/pc-to-mobile-redirect

3
ian

Uaprofとユーザーエージェントに基づいた無料の検出システムを提案します。 http://www.mobilemultimedia.be UAprofは、通常複数のユーザーエージェントが存在するため、検出可能な場合は検出の主キーである必要があります。同じuaprof。これを自分で管理したい場合は、データベース全体をダウンロードして自分でローカルに管理できるため、Wurflを使用する必要があります。

2
Klint

最近、同様のニーズがあったときに、 このコードHTTP_X_WAP_PROFILEHTTP_ACCEPT、およびHTTP_USER_AGENTブラウザをモバイルまたは非モバイルとして識別します。 PHPですが、必要なものにかなり簡単に変換できます(クラシックASPのVBScriptで実装しました)。

皮肉なことに、モバイルユーザーと非モバイルユーザーに特定のURLを提供することを決めたため、最終的にコードを使用しなかったことが判明しましたが、テスト時には確実に機能しました...

2
Dave DuPlantis

私はそれがここに投稿されているのを見ることができませんが、私が現在検討している別のオプションは www.detectmobilebrowser.com です

1
rrrr

最も簡単な方法は、モバイルブラウザに関連付けられた通常のタグで配列を作成することです。少なくともほとんどのモバイルユーザーエージェントには、Word mobile、mini、nokia、Java ME、Android、iphone、モバイルOSなどが必要です。ユーザーエージェントと一致する場合は、php strposを使用して、ページの上部にモバイルボタンを印刷し、ユーザーに選択を任せます。モバイルブラウザでも同じようなエクスペリエンスが得られるため、ほとんどの場合ズームまたはスクロールする必要があることを除けば、サイト全体が大好きです。

1
9jabooks

OK、これは非常に簡単な答えです-ユーザーに決定させるのはどうですか? APへのログイン時に、モバイルサイトへのリンクを提供します。モバイルサイトで、「メインサイトに戻る」リンクを提供します-モバイルデバイスでwww.fazolis.comを試してください-彼らはこれをうまくやっています。

次に、ブラウザサイトからモバイルサイトへのリンクで、「投票」とユーザーエージェントを登録します。 [〜#〜] your [〜#〜]モバイルサイトを希望するクライアントの独自の信頼できるリストを作成できます。これらのモバイルデバイスの画面サイズの仕様に合わせてこれを使用すると、満足のいくユーザーエクスペリエンスのためのかなり良いロジックを構築できます。これほど基本的なことをネットワークソースに投稿することはありません。

ああ、あなたの「モバイルサイト」-あなたのapを意味的にうまく書けば、モバイルとブラウザの両方に対して単一のサイトを提示できるはずです。2つの別々のページセットを書く必要があります。考えてみてください-これは、後で時間を節約するために余分に考えて努力する価値があります。

1
Samuel Fullman

ブラウザー、デバイス、受け入れられている言語、受け入れられている形式などのほとんどの情報を要求ヘッダーから取得します。上記のユーザーエージェントは、リクエストヘッダーの一部です。

1
Vijesh VP

wURFL APIを使用してデバイスタイプを検出できます

http://wurfl.sourceforge.net/wurfl_schema.php

または Modernizer ブラウザーの機能を検出する

0

実際、useragentに依存するだけでは、モバイルブラウザを検出するには不十分です。

確かに、数年前に特定の文字列を検索して、それがノキアか何かであると推測することができましたが、今では非常に多くの電話が出回っており、非常に多くの電話がより洗練されたものが必要ではないというふりをしています。

link text で素晴らしいサイトを見つけました。これは、MTVがすべてのモバイルWebサイトに使用しているのと同じソリューションに基づいています。それはデバイスに依存しないマークアップ言語を持っているので本当に良いですが、より重要なのは、isMobileDevice()のウェブサービス呼び出しを提供することです。

マニュアルを見て、「どのように機能するか」を確認してください。

私は顧客サイトにそれを使用してきましたが、まだ正確に検出されないモバイルブラウザを見つけていません。完全に盲目です!

0
Rich Holdsworth

ウェブサービスを使用して、handsetdetection.comなどのモバイルブラウジングを検出できます。

0
don

以前に定義したリストでユーザーエージェント文字列を確認する必要があります このような

0
hayalci

モバイルWeb上のデバイスと機能の検出 これらのコンテンツに遭遇しました

  1. デバイスと機能の検出を使用して、モバイルWebでのユーザーエクスペリエンスを向上させる
  2. デバイス検出の概要
  3. モバイルサイトの設計へのアプローチ
    1. 何もしない
    2. 一般的なモバイルサイトの提供
    3. モバイルと適応を考慮した設計
  4. コンテンツの適応とデバイスのグループ化戦略
    1. デバイスのグループ化
    2. コンテンツ適応
  5. そもそも適応の必要性を最小限に抑える
  6. デバイス検出の一般的なアプローチ
    1. サーバー側の適応
    2. クライアント側の適応
    3. サーバー側ユーザーエージェント(UA)とヘッダールックアップ
    4. サーバー側のUA文字列とデバイスデータベースルックアップの組み合わせ
    5. サーバー側のユーザーエージェントプロファイル(UAProf)の検出
    6. JavaScriptテクノロジーに基づく検出
    7. CSSメディアタイプ
    8. CSSメディアクエリ
  7. 追加のベストプラクティス
    1. リダイレクト+手動リンク
    2. リンク先ページ+手動リンク
  8. ダウンロード可能なサンプルページ
0
Kevin Hakanson