ADOBE AIR 1.5 でつくるデスクトップアプリにて
google analyticsを使ってイベントをトラッキングしてみます。
HTMLLoader を使って実装は簡単です。
まず、準備として、
google analyticsの設定を Webと同じ流れで設定しておきます。
google analyticsコードを貼り付けたHTMLを作って
WEBにアップします。
たとえばURLはこんな感じ。
http://example.com/tracking.html
そして、このURLをHTMLLoaderで開き、
Actionscriptで、このページのJavascriptを叩けばOK。
読み込んだHTMLのJavascriptへのアクセスは
HTMLLoader_instance.window;
で行える。
google analyticsが導入されたページには
イベントトラッキング用Javascriptメソッド、
pageTracker._trackEvent
があるので、これを叩きます。
HTMLLoader_instance.window.pageTracker._trackEvent("カテゴリー","アクション","ラベル","値");
こんな感じ。
ラベルと値は任意です。
カテゴリーだけの指定だとトラッキングが登録されませんでした。
以下、HTMLLoader クラスを拡張した TrackerHTMLLoader クラスです。
Actionscript:
-
package
-
{
-
-
import flash.events.*;
-
import flash.net.URLRequest;
-
import flash.html.HTMLLoader;
-
-
-
/*
-
* Adobe AIR の HTMLLoader を用いて google analyticsの イベントトラッキングをやるクラス
-
* code by quq.jp ※このコードの著作権は放棄しています。
-
*
-
* ※googleanalyticspage に google analytics (ga.js) が導入されたページのURLを設定します。
-
*
-
* ---
-
*
-
* var oTrackerHTMLLoader:TrackerHTMLLoader = new TrackerHTMLLoader()
-
* oTrackerHTMLLoader.addEventListener(TrackerHTMLLoader.EVENT_INITDONE,onTrackerHTMLLoaderInitDone);
-
* oTrackerHTMLLoader.initialize();
-
*
-
* function onTrackerHTMLLoaderInitDone(e:Event){
-
* (e.target as TrackerHTMLLoader).doTrack("カテゴリー","アクション","ラベル","値");
-
* }
-
*/
-
public class TrackerHTMLLoader extends HTMLLoader
-
{
-
-
static public var EVENT_INITDONE:String = "onInitDone";
-
static public var googleanalyticspage:String = "http://example.com/tracking.html";
-
-
private var pageloaded:Boolean = false;
-
-
public function TrackerHTMLLoader() {
-
super();
-
}
-
-
public function initialize() {
-
this.addEventListener(Event.COMPLETE, onLoadDone);
-
var oURLRequest:URLRequest = new URLRequest(googleanalyticspage);
-
this.load(oURLRequest);
-
}
-
-
private function onLoadDone(e:Event) {
-
pageloaded = true;
-
e.target.removeEventListener(e.type, arguments.callee);
-
this.dispatchEvent(new Event(EVENT_INITDONE));
-
}
-
-
public function doTrack(param0:String, param1:String, param2:String = null , param3:String = null ) {
-
if (!pageloaded) return;
-
if (!param2) {
-
this.window.pageTracker._trackEvent(param0, param1);
-
}else if (!param3) {
-
this.window.pageTracker._trackEvent(param0, param1, param2);
-
}else {
-
this.window.pageTracker._trackEvent(param0, param1, param2, param3);
-
}
-
}
-
-
}
-
-
}
7月 9, 2009 at 5:40 PM




私をフォローしてください. @quqjp





