- 2009年4月20日 19:54
- analyze
前回のエントリで、ユーザを募集してみたケータイコンテンツがあるんですが、これは何をやっていたかというと、Flash lite1.1での制作テストではなくて、ケータイコンテンツをAnalyticsでカウントできるように作ってみたテストなのでした。

結果が超少ないのは、僕のブログの注目の低さが如実に現れた残念な結果です。結果を増やすためにも、ご協力ください。
仕組み
Analyticsといっても、全てをカウントできるわけではありません。ケータイサイトの解析ならGA4Kを使うという手もあるでしょうけど、Flash lite1.1のインタラクティブ再生(HTMLにFlashを埋め込まないで、直接swfにアクセスするやり方)で解析するためには、これは使えません。
そして、Flash liteではスクリプトで通信するときはボタンを押したとき限定なので、「Flashが再生された」とか「ページにアクセスした」というタイミングは計測できません。ということは、逆に「どのボタンが押されたか」だけをカウントすることはできる」ということです。
実際は、ボタンを押したときにLoadVariablesでPHPに通信しています。そしてPHPはAnalyticsに通信して、カウントが計測される、という寸法です。
スクリプト
まず、1フレーム目にこんなスクリプトを書いておきます。ボタンがあるのは2フレーム目以降。
//PHPへのパスとアナリティクスID、サイトのドメインを設定します
$phpurl = "http://YOURDOMAIN/analytics.php";
$id = "UA-XXXXXXX-X";
$domain = "http://YOURDOMAIN";
//example:ryow.net
//
//あとはそのままでOK
fscommand2("GetDevice","devicename");
$user =devicename;
$phpurl = $phpurl add "?ga=" add $id add "&domain=" add $domain add "&usr=" add $user;
_focusrect =false;
ボタンがあるフレームにはこんな感じで。
//ボタン1
on (release, keyPress "1") {
$req = "/ktai/answer1";
loadVariables(/:$phpurl add "&request=" add $req, _root)
}
//ボタン2
on (release, keyPress "2") {
$req = "/ktai/answer2";
loadVariables(/:$phpurl add "&request=" add $req, _root);
}
以上で何をやってるかというと、指定されたPHPにどのボタンを押したかをカウントする変数を投げているというだけです。PHPから読み出した結果は(空ですが)_rootに置いてます。
そして気になるPHPはこちら。
$var_utmac =$_GET['ga'];
$var_utmhn =$_GET['domain'];
$var_uservar =null;
$var_utmp =$_GET['request'];
if(!$session){
$session = rand(1000000000, 9999999999);
}
$var_utmn=rand(1000000000,9999999999);
$var_cookie=$session; //cookie number
$var_random=rand(1000000000,2147483647);
$var_today=time();
$var_referer=$_SERVER['HTTP_REFERER'];
$urchinUrl='http://www.google-analytics.com/__utm.gif?utmwv=1&utmn='.$var_utmn.'&utmsr=-&utmsc=-&utmul=-&utmje=0&utmfl=-&utmdt=-&utmhn='.$var_utmhn.'&utmr='.$var_referer.'&utmp='.$var_utmp.'&utmac='.$var_utmac.'&utmcc=__utma%3D'.$var_cookie.'.'.$var_random.'.'.$var_today.'.'.$var_today.'.'.$var_today.'.2%3B%2B__utmb%3D'.$var_cookie.'%3B%2B__utmc%3D'.$var_cookie.'%3B%2B__utmz%3D'.$var_cookie.'.'.$var_today.'.2.2.utmccn%3D(direct)%7Cutmcsr%3D(direct)%7Cutmcmd%3D(none)%3B%2B__utmv%3D'.$var_cookie.'.'.$var_uservar.'%3B';
$header = '';
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$header = 'Accept-language: '.$_SERVER['HTTP_ACCEPT_LANGUAGE'].'\r\n';
}
if (!empty($_SERVER['HTTP_USER_AGENT'])) {
$header = 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'].'\r\n';
}
$opts = array(
'http'=>array(
'method'=>'GET',
'header'=>$header
)
);
$handle = fopen($urchinUrl, 'r', false, stream_context_create($opts));
$test = fgets($handle);
fclose($handle);
PHPを作る際には、こちらのモバイル(携帯サイト)でアクセス解析にGoogle Analyticsを使う方法 - Knowledge Database ITを参考にさせていただきました。
また、セッションが毎回新しくカウントされてしまうので、せめてユニークユーザだけでも知りたい、と思い、ここではケータイの機種名をユーザ定義変数としてセットしています。本当ならケータイごとにユニーク変数が取れるはずの「fscommand2("getDeviceID")」というコマンドがあるんですが、対応機種が事実上存在しないという無意味な環境変数なので、これは却下です。なので機種名だけゲットしています。これだと、同じ機種を使ってる人が同じユーザ定義になっちゃうんですが、まぁいいか。
というわけでAnalyticsにかなり突っ込んだ話になりました。
仕様が変わったら使えなくなると思いますが、こういうやり方もありますよ、というテクです。
使い方
まず、PHPはこのまんまアップしてもらえればOKです。
Flashは、まずフレームスクリプトを、お使いの環境に合わせてセットします。そしてボタンのonReleaseで、カウントしたい架空のURIをセットすればOK!
サンプル(PHP+fla)はこちらです。適当にどうぞー
ケータイで解析したいなら、うごくひと2というのが超絶高機能なので、こっちの方がよいです。このエントリはAnalyticsでどこまでこだわれるか、という実験なので。
- Newer: Google Analytics API入門編
- Older: モバイルFlashを作ったのでテストユーザ募集します
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://ryow.net/mt/mt-tb.cgi/428
- Listed below are links to weblogs that reference
- Flash lite1.1コンテンツをGoogle Analyticsで解析してみる from ryow.net Blog