ADOBE AIR で google analytics イベントトラッキング

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:
  1. package
  2. {
  3.  
  4.     import flash.events.*;
  5.     import flash.net.URLRequest;   
  6.     import flash.html.HTMLLoader;
  7.    
  8.    
  9.     /*
  10.     * Adobe AIR の HTMLLoader を用いて google analyticsの イベントトラッキングをやるクラス
  11.     * code by quq.jp ※このコードの著作権は放棄しています。
  12.     *
  13.     * ※googleanalyticspage に google analytics (ga.js) が導入されたページのURLを設定します。
  14.     *
  15.     * ---
  16.     *
  17.     * var oTrackerHTMLLoader:TrackerHTMLLoader = new TrackerHTMLLoader()
  18.     * oTrackerHTMLLoader.addEventListener(TrackerHTMLLoader.EVENT_INITDONE,onTrackerHTMLLoaderInitDone);
  19.     * oTrackerHTMLLoader.initialize();
  20.     *
  21.     * function onTrackerHTMLLoaderInitDone(e:Event){
  22.     *   (e.target as TrackerHTMLLoader).doTrack("カテゴリー","アクション","ラベル","値");
  23.     * }
  24.     */
  25.     public class TrackerHTMLLoader extends HTMLLoader
  26.     {
  27.        
  28.         static public var EVENT_INITDONE:String = "onInitDone";
  29.         static public var googleanalyticspage:String = "http://example.com/tracking.html";
  30.        
  31.         private var pageloaded:Boolean = false;
  32.        
  33.         public function TrackerHTMLLoader() {
  34.             super();
  35.         }
  36.        
  37.         public function initialize() {
  38.             this.addEventListener(Event.COMPLETE, onLoadDone);
  39.             var oURLRequest:URLRequest = new URLRequest(googleanalyticspage);
  40.             this.load(oURLRequest);
  41.         }
  42.        
  43.         private function onLoadDone(e:Event) {
  44.             pageloaded = true;
  45.             e.target.removeEventListener(e.type, arguments.callee);
  46.             this.dispatchEvent(new Event(EVENT_INITDONE));
  47.         }
  48.        
  49.         public function doTrack(param0:String, param1:String, param2:String = null , param3:String = null ) {
  50.             if (!pageloaded) return;
  51.             if (!param2) {
  52.                 this.window.pageTracker._trackEvent(param0, param1);   
  53.             }else if (!param3) {
  54.                 this.window.pageTracker._trackEvent(param0, param1, param2);   
  55.             }else {
  56.                 this.window.pageTracker._trackEvent(param0, param1, param2, param3);   
  57.             }
  58.         }
  59.        
  60.     }
  61.    
  62. }

Bookmark and Share





blog.quq.jp