今年の1月に書いたUniversal Analyticsのフィーチャーフォン(ガラケー)設定の続きです。
「やり方がわからないので教えてほしい」との依頼があったので、自分が設定した方法を紹介したと思います。
基本的には前回紹介している下記サイトさんからのコピーになります。
⇒ GOOGLE ANALYTICS MEASUREMENT PROTOCOL FOR PHP – CAMPAIGN TRACKING
まずは問題だったcidを生成するところから。
これは生成方法が不明なため、参考サイトさんからまるっとコピー。
参考サイトさんでは function 化してますが、面倒なので変数に直接突っ込みます。
$cid = sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
// 16 bits for "time_mid"
mt_rand( 0, 0xffff ),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand( 0, 0x0fff ) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand( 0, 0x3fff ) | 0x8000,
// 48 bits for "node"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
続いて、Google に渡す値を設定していきます。
下記に記載しているもの以外にも設定できる値は沢山あります。
詳しくはMeasurement Protocol Parameter Referenceに書かれているので見てみてください。
今回はMeasurement Protocol Developer Guideの「Page Tracking」に記載されている値のみ設定します。
$data['v'] = '1';
$data['tid'] = 'UA-XXXX-Y';
$data['cid'] = $cid;
$data['t'] = 'pageview';
$data['dh'] = 'hogehoge.net';
$data['dp'] = '/hogehoge';
$data['dt'] = 'hogehogeのページ';
設定した値の説明です。
「v」は バージョンです。
たぶん Universal Analytics のバージョンだと思います。
2014 年 6 月現在では「1」が固定値になっています。
「tid」はトラッキングIDです。
自分のサイトのトラッキング ID を設定してください。
「cid」は匿名クライアントIDだそうです。
上記で生成した物を設定します。
「t」は計測のタイプです。
今回はページ表示の計測なので「pageview」を設定します。
他にも「ボタンをクリックする」などのイベント時に設定する「event」など、いろいろあるみたいなのでMeasurement Protocol Parameter Referenceを見てみてください。
「dh」はサーバーのホスト名です。
自分のサーバーのホスト名を設定してください。
「dp」はドキュメントパスです。
開いてるページのディレクトリパスを設定してください。
「dt」はドキュメントタイトルです。
title タグで指定してるタイトルを設定してください。
続いては接続準備です。
$url = 'http://www.google-analytics.com/collect';
$content = http_build_query($data);
$content = utf8_encode($content);
$user_agent = 'hogehoge/1.0 (http://hogehoge.net/)';
$urlは値を投げるGoogle様のURLです。
セキュリティを考えてhttpsで接続したければ
https://ssl.google-analytics.com/collect
に変えてください。
先ほど設定した値を http_build_query で URL エンコードし、さらに文字コードを utf8_encode で UTF-8 にエンコードします。
$user_agent に設定するユーザーエージェントは適当なもので大丈夫だと思います。
値を Google のサーバーに送信します。
$ch = curl_init();
curl_setopt($ch,CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);
curl_setopt($ch,CURLOPT_POST, TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS, $content);
curl_exec($ch);
curl_close($ch);
上記の様に書けば送信されます。
ただし、curlを使用するためサーバーにcurlがインストールされている必要があります。
curlがインストールされていない場合は、getに値を設定し直接URLを開く事で送信することもできます。
$url = 'http://www.google-analytics.com/collect';
$url .= '?v='.$data['v'];
$url .= '&tid='.$data['tid'];
$url .= '&cid='.$data['cid'];
$url .= '&t='.$data['t'];
$url .= '&dh='.$data['dh'];
$url .= '&dl='.$data['dl'];
$url .= '&dr='.$data['dr'];
$url .= '&dp='.$data['dp'];
$url .= '&dt='.$data['dt'];
この URL を img タグなどに設定しページが開いたときに URL が参照されるようにすれば値が送信されます。
img タグで読み込んだ場合、GIF ファイルが読み込まれてるようで「GIF89a」って文字化けが表示されてしまいます。
なので、functonにするか外部ファイルに記述するなどして「GIF89a」が表示されないように工夫する必要があります。
いかがでしょう。
たぶん上級者さん達からすれば「ここをこうすればもっと処理がスムーズになるのに」とかあるかもしれませんが、へたれなので突っ込まないでください。
自分は現状これで動いていますが、サーバーによっては動かないかもしれません。
「確実に動く!」という保証がある訳ではないので、参考程度に読んでください。
コメント(4件)
はじめまして。勉強させて頂いております。
この記事を参考にしてガラケー用ユニバーサルアナリティクスを設定しようとしている者です。
現在、curlを使わない方法で設置を進めているのですがどうにもうまくいかず、
に仕込むURLの生成までは出来ているのですが、Analytics側で反応してくれません。(リアルタイム計測でも反応していません。)
そこで出来ればご相談に乗っていただきたく、コメントさせて頂きました。
設定しているPHPコードをコメントで書くと長すぎるので僕のウェブサイトに現在設定している内容のドキュメントを載せておきます。
できれば問題点をしていただけると助かります。
よろしくお願い致します。
お久しぶりです。
しばらく放置(逃避)していたのですが久しぶりに触ってみたらすんなり動作しましたのでご報告しておきます。
ご迷惑おかけしました。
お久しぶりです。
すみません、自分も返信をすっかり忘れていました(汗)
無事動いたとのことで、おめでとうございます。
アナリティクスはたまにそういうこともあるので、1週間くらい様子見ながら進めるのがいいかと思います。
はじめまして。
コメントありがとうございます。
じっくり見てからお返事したいと思うので、少し時間をください。
その際の返信はこのコメント欄に記入します。