web-dev-qa-db-ja.com

モバイルデバイスとタブレットデバイスを検出する

現在、PHPモバイルの検出のためのコードを探しています。これはおそらく非常に簡単です。

今、問題が1つあります。タブレット、モバイル、およびWebページのMVCフレームワークで一意のビューファイルを作成できるようにしたいのです。そのため、タブレットを他のモバイルデバイスから分割する必要があります。

現在、これは私が使用しているコードです:

public function isMobile()
{   
    if(preg_match('/(alcatel|amoi|Android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|iPod|j2me|Java|midp|mini|mmp|mobi|Motorola|nec-|nokia|Palm|panasonic|philips|phone|sagem|sharp|sie-|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $_SERVER['HTTP_USER_AGENT']))
    return true;
else
    return false;
}

しかし、これだけでは十分ではありません。唯一のチェックは、デバイスがモバイルデバイスであるかどうかです。最後の部分は大丈夫です-しかし、私は実際のモバイルでモバイルデバイスを分割したいと考えています。

私は私の願いを明確にしたことを望み、これを達成するための良い方法でいくつかのインプットがあることを願っています。

前もって感謝します。

22
denlau

各プラットフォームを個別に検出するメソッドを備えたクラスを次に示します。

33
Joe

古い質問ですが、ここではモバイル検出に関する私の意見を述べます。

あなたはあなたの質問にモバイルデバイス用のユニークなファイルが欲しいと述べているので、この理由はモバイルクライアントとデスクトップクライアント用に異なるバージョンのウェブサイトを提示するためだと推測できます。

このアプローチは、特定のポイントまで問題ありません。そして、そのポイントはAndroidと呼ばれます。 〜150万 Android 320 * 240から2560 * 1600の解像度で毎日アクティブ化されるデバイスは、if {} elseそれぞれ。最も使用されているデバイスでリストを作成しようとして、それらのデバイスのみをターゲットにしようとしても、将来新しいデバイスをサポートすることは困難です。

しばらく前の私のアプローチは、デバイスを「モバイル」カテゴリと「デスクトップ」カテゴリに分割する古い方法を忘れて、新しい方法を作成することでした。そしてその方法は、ブラウザの機能に基づいた「良い」ブラウザと「悪い」ブラウザで構成されています。たとえば、ブラウザがローカルストレージをサポートしている場合、「良い」カテゴリに分類されます。

これから始めて、UIの観点からは非常に基本的ですが、クロスブラウザーで機能するWebサイトの「ベース」バージョンを作成する可能性がありました。ウェブサイトのこの基本バージョンは、すべてのデバイスで同じコンテンツ(が一日の終わりに重要であるため)を表示し、サイズは非常に小さくなります(少ないアセット、より小さなhtml)およびブラウザ機能に基づいて、クライアント側で強化されます。

最終的に、非常に小さなフットプリント(htmlサイズとアセット)を備えたWebサイトになります。変更なしで市場に登場する新しいデバイスは、接続状態が悪い場合でも高速にロードされ、ブラウザ機能に基づいてクライアント側で強化できます。

デバイスのサイズに基づいてWebページを充実させることもできます。ブラウザが大画面を報告する場合、より多くのアセット、広告を取り込み、Webページをより美しくすることができます。ブラウザのレポートが小さな画面上にある場合は、そのままにしておきます。

8

Mobile_Detectは、モバイルデバイス(タブレットを含む)を検出するための軽量なPHPクラスです。特定のHTTPヘッダーと組み合わせたUser-Agent文字列を使用して、モバイル環境を検出します。—続きを読む http ://mobiledetect.net

5
jacksonfdam

また、is_mobileやis_tabletなどのモバイルデバイスの機能を検出するサービスであるWURFL Cloudなどのより包括的なソリューションを使用することもできます。トラフィックの少ないサイトには無料のプランがあります: http://www.scientiamobile.com/cloud

0
SteveK