106

私はいたるところを見てきました。Motorola Zoom を使用して、タブレット サイトのテストを行っています。問題は、Android Useragent が一般的な Useragent であり、タブレット Android とモバイル Android の間に違いがないことです。Xoom Useragent のような特定のデバイスだけをターゲットにしたくはありません。近い将来、Android は複数のタブレット デバイスに搭載される可能性が高いからです。

私たちは Umbraco CMS を使用しており、51Degrees.mobi ソリューションの使用を検討しましたが、現時点では、これは私たちのニーズには合いません。たぶん将来的に。51Degrees と Umbraco の何人かが Umbraco への統合を行う予定であることは知っていますが、最終的なプロジェクトはおそらく 2 か月ほどは公開されないでしょう。
したがって、なぜ Android タブレットの Useragent 文字列を検出し、現在のようにモバイル サイトに誘導しないようにする必要があるのでしょうか。

特定のデバイスではなく、一般的な Android タブレットの検出方法を知っている人がいる場合は、非常に役立ちます。

4

15 に答える 15

114

問題は、Android User-Agentが一般的なUser-Agentであり、タブレットAndroidとモバイルAndroidの間に違いがないことです。

これは正しくありません。モバイルAndroidのUser-Agentヘッダーには「Mobile」文字列があります。タブレットAndroidはそうではありません。

ただし、 userAgentで「モバイル」Safariを報告するタブレットはかなり多く、モバイルとタブレットを区別する唯一の確実な方法は後者だけではありません

于 2011-03-17T19:48:18.033 に答える
20

@Carlos: 彼の記事で Tim Bray はこれを推奨しています ( Google による別の投稿と同様) が、残念ながら、すべてのタブレット メーカーに適用されているわけではありません。

...ラージ フォーム ファクタ デバイスのメーカーは、ユーザー エージェントから「モバイル」を削除することをお勧めします...

私が見たほとんどの Android タブレットのユーザー エージェント文字列は、Samsung Galaxy Tab などのモバイル サファリを使用しています。

Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (Gecko のような KHTML) バージョン/4.0 モバイル Safari/533.1

現時点では、Android タブレットを検出するためにデバイス名を確認しています。市場にいくつかのモデルしかない限り、それは問題ありませんが、すぐにこれは醜い解決策になるでしょう.

少なくとも XOOM の場合、モバイル部分はなくなったようです。

Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (Gecko のような KHTML) バージョン/4.0 Safari/534.13

ただし、現在 Andorid 3.x を搭載したタブレットしかないため、Android 3 で確認するだけで十分です。

于 2011-04-08T15:03:34.193 に答える
12

「モバイル」ユーザーエージェントも検出する方がよいでしょう

タッチ スクリーンの最適化など、Android 固有の機能を実装するために User-Agent で「android」を検出したい場合もありますが、主なメッセージは次のとおりです。モバイル サイトが UA スニッフィングに依存している場合は、文字列「mobile」を検出してくださいUser-Agent では、単なる「android」ではなく「android」です。これにより、モバイルとタブレットの両方の訪問者に適切にサービスを提供できます。

ブラウザ経由で Android デバイスを検出する

 < script language="javascript"> <!--
     var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
              if (mobile) {
                  alert("MOBILE DEVICE DETECTED");
                  document.write("<b>----------------------------------------<br>")
                  document.write("<b>" + navigator.userAgent + "<br>")
                  document.write("<b>----------------------------------------<br>")
                  var userAgent = navigator.userAgent.toLowerCase();
                  if ((userAgent.search("android") > -1) && (userAgent.search("mobile") > -1))
                         document.write("<b> ANDROID MOBILE <br>")
                   else if ((userAgent.search("android") > -1) && !(userAgent.search("mobile") > -1))
                       document.write("<b> ANDROID TABLET <br>")
              }
              else
                  alert("NO MOBILE DEVICE DETECTED"); //--> </script>
于 2011-10-14T05:06:40.170 に答える
8

Xoom だけをターゲットにしたくないので、このスクリプトを試すことができます。私は Xoom を持っていませんが、動作するはずです。

function mobile_detect(mobile,tablet,mobile_redirect,tablet_redirect,debug) {
var ismobile = (/iphone|ipod|android|blackberry|opera|mini|windows\sce|palm|smartphone|iemobile/i.test(navigator.userAgent.toLowerCase()));
var istablet = (/ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i.test(navigator.userAgent.toLowerCase()));

if (debug == true) {
    alert(navigator.userAgent);
}

if (ismobile && mobile==true) {
    if (debug == true) {
        alert("Mobile Browser");
    }
    window.location = mobile_redirect;
} else if (istablet && tablet==true) {
    if (debug == true) {
        alert("Tablet Browser");
    }
    window.location = tablet_redirect;
}
}

github にプロジェクトを作成しました。確認してください - https://github.com/codefuze/js-mobile-tablet-redirect。何か問題がある場合は、お気軽に問題を送信してください。

于 2011-12-31T04:34:22.343 に答える
6

ユーザー エージェントで Android を検出したら、次のようにしてタブレットとスマートフォンのブラウザーを区別します (これは Python を使用していますが、他のプログラミング言語でも同様に簡単です)。

if ("Android" in agent):
  if ("Mobile" in agent):
    deviceType = "Phone"
  else:
    deviceType = "Tablet"

更新: 以下のコメントに従って、Android での Chrome の使用を反映します。

于 2012-03-29T15:51:30.553 に答える
5

このサイトのエージェントの文字列に基づく:

http://www.webapps-online.com/online-tools/user-agent-strings

この結果が出てきました:
最初:

すべてのタブレット デバイスには次のものがあり
ます。 1. タブレット
2. iPad

2番:

すべての電話デバイスには次のものがあり
ます。 1. モバイル
2. 電話

三番:

タブレットおよび電話デバイスには次のものがあり
ます。 1. Android

レベルごとに検出できれば、結果は 90% 正しいと思います。SharePoint デバイス チャネルと同様です。

于 2015-09-23T09:18:44.010 に答える
2

一部のタブレットで「モバイル」が省略されているかどうかはわかりませんが、Samsung Galaxy Tab を含む多くのタブレットはユーザー エージェントにモバイルが含まれているため、モデルの詳細を確認しなければ Android タブレットと Android フォンを検出することはできません。毎月デバイス リストを更新および拡張する予定がない限り、この私見は時間の無駄です。

残念ながら、ここでの最善の解決策は、これについて Google に苦情を申し立て、Chrome for Android を修正してもらい、モバイル デバイスとタブレットを識別するためのテキストを追加することです。文字列の特定の場所にある単一の文字 M または T でさえ十分ですが、それはあまりにも理にかなっていると思います。

于 2012-07-27T15:51:05.010 に答える
1

ユーザーがタブレットを使用しているかどうかを検出するには、Categorizrを使用することをお勧めします。categorizr のテスト結果はこちらでご覧いただけます

于 2012-03-01T00:43:50.117 に答える
1

最新のタブレットのほとんどは、ハニカム 別名 3.x を実行します。デフォルトで 3.x を実行する電話はありません。現在 2.x を実行しているほとんどのタブレットは容量が少なく、とにかくモバイル サイトを表示する場合よりも優れている可能性があります。私はそれが完璧ではないことを知っています..しかし、私はそれが携帯電話の不在よりもはるかに正確だと思います..

于 2011-09-25T19:39:48.633 に答える
1

Mobile Android のユーザー エージェント文字列には "mobile" が含まれる場合がありますが、タブレットで Opera Mobile for Android を使用している場合はどうなるでしょうか? ユーザー エージェント文字列には引き続き「モバイル」が含まれますが、タブレット サイズのサイトが表示されるはずです。「mobile」だけでなく、「opera」が前に付いていない「mobile」をテストする必要があります。

または、Opera Mobile のことを忘れてもかまいません。

于 2011-12-15T12:30:50.583 に答える
1

Xoom のユーザー エージェントには Xoom という単語があります。

Galaxy Tab のユーザー エージェントには「Mobile」があります: Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (Gecko のような KHTML) Version/4.0 Mobile Safari/533.1

そのため、Xoom を検出するのは簡単ですが、特定の Android バージョンがモバイルかどうかを検出するのは困難です。

于 2011-07-26T00:03:55.237 に答える
1

「モバイル」の不在を使用する場合は、ほぼ正しいです。ただし、Mobile キーワードを送信しない HTC Sensation 4G (android 2.X で 4.3 インチ) があります。

別々に扱いたい理由としては、iframesなどがあります。

于 2011-07-11T18:40:01.017 に答える
0

51Degrees ベータ版の 1.0.1.6 と最新の安定リリース 1.0.2.2 (2011 年 4 月 28 日) には、タブレットをスニッフィングする機能があります。基本的に次の行に沿って:

string capability = Request.Browser["is_tablet"];

これがお役に立てば幸いです。

于 2011-04-29T03:33:10.283 に答える