*

Android機種名を取得するPHPコード

公開日: : 最終更新日:2013/05/23 トラッキング


LINE facebook twitter URLコピー
B! pocket Evernote 楽天


家電&カメラ タイムセール/バーゲン会場/クーポン配布はこちら。
Amazonでクーポンをもらう

【Amazonファッション】メンズ80%オフ商品を見る!
セール商品を見る


REGZAフォン、来たーーー!!!


AndroidもUSERAGENTから機種名が取れましたよ。とりあえず、ホスト名に上書きしちゃってますがw。


AndroidのUSERAGENT


UAは例えばこんな感じ。HT03Aなどは入る場所もちょっと違うとか、ホントいろいろあります。


Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5
Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5
DoCoMo/2.0 P900i(c100;TB;W30H14)
Mozilla/5.0 (Linux; U; Android 2.1-update1; ja-jp; SonyEricssonSO-01B Build/2.0.B.0.138) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17
Mozilla/5.0 (Linux; U; Android 2.2; ja-jp; SC-01C Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
WS007SH Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16
Opera/9.80 (Android; Opera Mini/5.1.22460/21.549; U; ja) Presto/2.5.25 Version/10.54


何気にこんな機種もあるんですね。これはタブレットに分類したいなあ。



Android機種名取得で考えたこと


当サイトでは、スマートフォンをWordPressのKtai-styleというプラグイン、テンプレートで表示させています。ですから、iPhoneやAndroidも携帯トラッキング同様、ga.phpで取得しています。


そこで、ga.php内でUAを取得し、そこから機種名を抽出します。UA取得後は半角スペースで区切り、配列に入れます。すると、だいたい配列の[6]番目に機種名が入るんですね、ただし以下注意。


・Android、HT03Aは[7]番目。
・国内販売だけでも(前述のように)かなりの機種がある。
・iPadやiPhoneは単純に抽出しただけだと、余計な文字も入ってしまう。
・(モバイルビューOFFで)一部HTCでMacintoshと認識される。
・iPhone等はバージョン取得
・PHP5以上(ga.phpがそもそもPHP5以上)


なお、ga.phpで使われていないcookieを指定したところ、うまく取れませんでした。ですので、普段あまり使っていないホスト名(通常は同じドメインが記録されていることが多いと思います。Google翻訳などを経由するとGoogleと表示されるらしいので、活用はかなり特殊なケースかと判断)に上書き(オーバーライド)しちゃいました。$domainNameという値をオーバーライドします。



Android機種名取得のコード


ga.phpに追加して下さい。私は128行目の「$account = $_GET["utmac"];」以降に入れました。

// 追加(途中にもあるので、無くてもいいかもしれませんが)
    $userAgent = $_SERVER["HTTP_USER_AGENT"];
//ua0がユーザーエージェント、ua1が配列、ua2は区切り文字。結果$ua1[6]が機種名
$ua0 = $userAgent;
$ua1 = array();
$ua2 = " ";
//Androidをチェック HT03Aだけ7番目が機種名
if(strpos($ua0, "Android" ) ){
 $ua1 = spliti( $ua2 , $ua0 );
 if ($ua1[6]=='Docomo'){ $ua1[6]=$ua1[7]; }
 if ($ua1[6]=='TOSHIBA_AC_AND_AZ)'){ $ua1[6]="TOSHIBA_AC_AND_AZ"; }
 $domainName = $ua1[6];
 }
//iPadをチェック (と;が付いてしまうので処理
 elseif(strpos($ua0, "iPad" ) ){
 $ua1 = spliti( $ua2 , $ua0 );
 $ua1[6] = str_replace('(', '', $ua1[1]);
 $ua1[6] = str_replace(';', '', $ua1[6]);
 $domainName = $ua1[6];
 }
//iPhone バージョンを入れる
 elseif(strpos($ua0, "iPhone" ) ){
 $ua1 = spliti( $ua2 , $ua0 );
 $domainName = $ua1[6];
 }
//iPod (と;が付いてしまうので処理
 elseif(strpos($ua0, "iPod" ) ){
 $ua1 = spliti( $ua2 , $ua0 );
 $ua1[6] = str_replace('(', '', $ua1[1]);
 $ua1[6] = str_replace(';', '', $ua1[6]);
 $domainName = $ua1[6];
 }
//HTC Macという認識もするらしいので、文字列もキレイに
 elseif(strpos($ua0, "Macintosh" ) ){
 $ua1 = spliti( $ua2 , $ua0 );
 $ua1[6]=$ua1[9];
 $ua1[6] = str_replace('/ERE27)', '', $ua1[6]);
 $domainName = $ua1[6];
 }
 else{
//とりあえず何もひっかからなければ通常の値を。
 $domainName = $_SERVER["SERVER_NAME"];
 }


これで、このソースの後にくる“&utmhn=” . urlencode($domainName) .に、Android機種名が取得されます。結果はTOPの通り。


まあ、これがOSのバージョンに、iPhoneやAndroidのときだけ入れられれば、携帯機種名とともに理想なんですけどね。


 ・ ・ ・ ・ ・


というわけで、年内はここまで。30日〜3日までは、更新もお休みします。本年も大変お世話になりました、ありがとうございます。


それでは、良いお年を!
 

できる100ワザ Google Analytics 増補改訂版 SEO&SEMを強化する新・アクセス解析術
大内 範行 できるシリーズ編集部
インプレスジャパン
売り上げランキング: 16153

関連するほかの記事を見てみよう!
このサイトのトップページへ行く

  • このエントリーをはてなブックマークに追加
  • Pocket

Profile



Yoshihiko Yoshida
メディア運営業界23年目。Googleアナリティクス公式コミュニティ・アンサリスト最高ランク「レジェンド」国内初獲得。「マツコの知らない世界」Googleマップ案内人TV出演。Googleストリートビュー認定フォトグラファー。教育システム情報学会会員。元立教大学非常勤講師。主な著書「Googleアナリティクス基礎講座」(技術評論社)。趣味はデジカメとゲームとパン作り。>>もっと読む

Instagram

◆代表者略歴 ◆受賞歴
◆おもな著書 ◆TV出演歴
◆新聞掲載歴 ◆雑誌/連載歴
 <<お問い合わせはこちら>>

Facebook

このブログをRSS購読しよう!(無料)

follow us in feedly

よろしければ「いいね」して下さい!

 
PAGE TOP ↑