エンタープライズeコマースwebapp(Java/Servletベース)のモバイルブラウザサポートの道を歩み始めています。もちろん、多くの決定を下す必要がありますが、私にとっては、モバイルブラウザを確実に検出し、それに応じて返されるコンテンツを決定できることが基本であるように思えます。 httpリクエストに基づいてこの決定を(迅速に)行うための標準的な方法があり、理想的には、リクエストを行っている特定のブラウザおよびデバイスに関する詳細情報(画面サイズ、html機能など)を収集します。
また、既存の大規模なエンタープライズwebappを採用し、開発側からモバイルブラウザーサポートを設計するというこの道をたどった人から役立つ補足情報をいただければ幸いです。
[編集]私は確かにリクエストヘッダーを理解しており、標準ユーザーエージェントのデータベースに関する情報は非常に役立ちます。 「その他」のリクエストヘッダープロパティについて話している場合、同様の標準化された名前/値のリソースを含めることができれば大きな助けになります。
[編集]数人のユーザーが、検出を行うWebサービスへのネットワーク経由の呼び出しを含むソリューションを提案しています。これは確かに機能しますが、2つの理由からエンタープライズeコマースサイトに適したソリューションではありません。1)速度。サードパーティへのすべてのページリクエストに対する回線経由の呼び出しは、パフォーマンスに大きな影響を与えます。 2)依存関係/法的。ウェブサイトの応答時間と主要な機能をサービスに結び付けますが、これは法律上およびリスク上の理由で恐ろしいことです。
ユーザーエージェントをチェックするのは標準的な方法ではないでしょうか? ユーザーエージェントのデータベース は、モバイルブラウザの検出に使用できます。
@Davidの答えはWURFLを使用して言及しました-これはおそらく最良の選択肢です。ただし、成功率は通常約60%です(私の経験や他の経験から)。キャリアが絶えずUAを変更し、存在するデバイスプロファイルの量(60,000+?)に応じて、必要なすべての適切なデータを取得する完全な方法はありません。
デバイスDBに大きく依存する前のほんの少しの警告。私が間違っていると推測した場合に備えて、ユーザーがセッションオプションを変更できるようにすることで、ユーザーのオプションを開いたままにします。
Modernizrを使用して、ブラウザの機能を検出できます
ユーザーエージェントを介してモバイルブラウザーを検出できましたが、PCプラットフォームでのブラウザー戦争は、ユーザーエージェントのスニッフィングは実際にはそれほど良いことではないことを示しています。
理想的には、メディアタイプに基づいて特定のスタイルを適用するか、ブラウザが好むコンテンツの種類を伝えるAccept-headerなどのユーザーエージェント以外のヘッダーに基づいて異なる回答を送信する必要があります。 。
現時点では、iPhoneで動作し、Operaブラウザスニッフィングを介して動作するサイトをコーディングするだけで十分かもしれませんが、Google Androidは、近い将来、iPhoneに近いブラウザ機能を持つ他の多くの携帯電話があり、これらのデバイスを最初からpossibelほどサポートしていないモバイルWebサイトを開発するのは無駄です。
モバイルデバイスを検出する正しい方法を何日も探した後、私はそれを単純な[愚かな]にしておくことにしました。インデックスページに[モバイルデバイスサイト]ボタンを配置します。
モバイルブラウザの検出 -さまざまなプログラミング言語のスニペット。
次の軽量の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
Uaprofとユーザーエージェントに基づいた無料の検出システムを提案します。 http://www.mobilemultimedia.be UAprofは、通常複数のユーザーエージェントが存在するため、検出可能な場合は検出の主キーである必要があります。同じuaprof。これを自分で管理したい場合は、データベース全体をダウンロードして自分でローカルに管理できるため、Wurflを使用する必要があります。
最近、同様のニーズがあったときに、 このコード がHTTP_X_WAP_PROFILE
、HTTP_ACCEPT
、およびHTTP_USER_AGENT
ブラウザをモバイルまたは非モバイルとして識別します。 PHPですが、必要なものにかなり簡単に変換できます(クラシックASPのVBScriptで実装しました)。
皮肉なことに、モバイルユーザーと非モバイルユーザーに特定のURLを提供することを決めたため、最終的にコードを使用しなかったことが判明しましたが、テスト時には確実に機能しました...
私はそれがここに投稿されているのを見ることができませんが、私が現在検討している別のオプションは www.detectmobilebrowser.com です
最も簡単な方法は、モバイルブラウザに関連付けられた通常のタグで配列を作成することです。少なくともほとんどのモバイルユーザーエージェントには、Word mobile、mini、nokia、Java ME、Android、iphone、モバイルOSなどが必要です。ユーザーエージェントと一致する場合は、php strposを使用して、ページの上部にモバイルボタンを印刷し、ユーザーに選択を任せます。モバイルブラウザでも同じようなエクスペリエンスが得られるため、ほとんどの場合ズームまたはスクロールする必要があることを除けば、サイト全体が大好きです。
OK、これは非常に簡単な答えです-ユーザーに決定させるのはどうですか? APへのログイン時に、モバイルサイトへのリンクを提供します。モバイルサイトで、「メインサイトに戻る」リンクを提供します-モバイルデバイスでwww.fazolis.comを試してください-彼らはこれをうまくやっています。
次に、ブラウザサイトからモバイルサイトへのリンクで、「投票」とユーザーエージェントを登録します。 [〜#〜] your [〜#〜]モバイルサイトを希望するクライアントの独自の信頼できるリストを作成できます。これらのモバイルデバイスの画面サイズの仕様に合わせてこれを使用すると、満足のいくユーザーエクスペリエンスのためのかなり良いロジックを構築できます。これほど基本的なことをネットワークソースに投稿することはありません。
ああ、あなたの「モバイルサイト」-あなたのapを意味的にうまく書けば、モバイルとブラウザの両方に対して単一のサイトを提示できるはずです。2つの別々のページセットを書く必要があります。考えてみてください-これは、後で時間を節約するために余分に考えて努力する価値があります。
ブラウザー、デバイス、受け入れられている言語、受け入れられている形式などのほとんどの情報を要求ヘッダーから取得します。上記のユーザーエージェントは、リクエストヘッダーの一部です。
wURFL APIを使用してデバイスタイプを検出できます
http://wurfl.sourceforge.net/wurfl_schema.php
または Modernizer ブラウザーの機能を検出する
実際、useragentに依存するだけでは、モバイルブラウザを検出するには不十分です。
確かに、数年前に特定の文字列を検索して、それがノキアか何かであると推測することができましたが、今では非常に多くの電話が出回っており、非常に多くの電話がより洗練されたものが必要ではないというふりをしています。
link text で素晴らしいサイトを見つけました。これは、MTVがすべてのモバイルWebサイトに使用しているのと同じソリューションに基づいています。それはデバイスに依存しないマークアップ言語を持っているので本当に良いですが、より重要なのは、isMobileDevice()のウェブサービス呼び出しを提供することです。
マニュアルを見て、「どのように機能するか」を確認してください。
私は顧客サイトにそれを使用してきましたが、まだ正確に検出されないモバイルブラウザを見つけていません。完全に盲目です!
ウェブサービスを使用して、handsetdetection.comなどのモバイルブラウジングを検出できます。
以前に定義したリストでユーザーエージェント文字列を確認する必要があります このような
モバイルWeb上のデバイスと機能の検出 これらのコンテンツに遭遇しました