このページでは、サンプルの Google Flash Tracking Analytics SWF のソース、GoogleAnalytics.as を示します。または、zip ファイルとしてダウンロードすることも可能です。このサンプル ファイルは、プレーヤのロード、ストリームの開始、およびストリームの完了イベントをGoogle Analytics に通知します。詳細は、アナリティクス SWF の例: Google Analytics Flash Tracking を参照してください。
package {
import com.brightcove.api.APIModules;
import com.brightcove.api.CustomModule;
import com.brightcove.api.events.ExperienceEvent;
import com.brightcove.api.events.MediaEvent;
import com.brightcove.api.modules.ExperienceModule;
import com.brightcove.api.modules.MenuModule;
import com.brightcove.api.modules.VideoPlayerModule;
import com.google.analytics.AnalyticsTracker;
import com.google.analytics.GATracker;
import flash.display.Stage;
import flash.system.Security;
public class GoogleAnalytics extends CustomModule {
// ----------------------------------------------------------------------------
// 定数
// Google アカウント ID は URL パラメータ gid からロードされる
private const ACCOUNT_ID :String = loaderInfo.parameters.gid;
private const BRIDGE_MODE :String = "AS3";
private const DEBUG_MODE :Boolean = false;
// ----------------------------------------------------------------------------
// イベント名
private const EVENT_PLAYER_LOAD :String = "player_load";
private const EVENT_VIDEO_START :String = "video_start";
private const EVENT_VIDEO_COMPLETED:String = "video_complete";
// ----------------------------------------------------------------------------
private var _bcExperience:ExperienceModule;
private var _bcVideo:VideoPlayerModule;
//private var _bcMenu:MenuModule;
private var _bcStage:Stage;
private var _tracker:AnalyticsTracker;
/**
* コンストラクタ
*/
public function GoogleAnalytics() {
Security.allowDomain("*");
}
// ----------------------------------------------------------------------------
/**
* イベントを発生させる。このメソッドには、ページ ロードとして、またはリンクのクリックとして、
* イベントを発生させる正確な方法に関するすべてのロジックが
* 含まれる。
*/
private function fireEvent(eventName:String):void {
var experienceId:Number = _bcExperience.getExperienceID();
var playerName:String = _bcExperience.getPlayerName();
var action:String = "";
switch (eventName) {
case EVENT_PLAYER_LOAD:
var experienceURL:String = _bcExperience.getExperienceURL();
var referrerURL:String = _bcExperience.getReferrerURL();
action = "/playerid=" + experienceId + "/playername="
+ playerName + "/url=" + experienceURL + "/refurl="
+ referrerURL + "/" + eventName;
break;
// 必要に応じてここにケースを追加する
default:
var video:Object = _bcVideo.getCurrentVideo();
var playlistId:Number = video.lineupId;
var videoId:Number = video.id;
var videoName:String = video.displayName;
action = "/playerid=" + experienceId + "/playername=" + playerName
+ "/playlistid=" + playlistId + "/videoid=" + videoId
+ "/videoname=" + videoName + "/" + eventName;
}
_tracker.trackPageview(action);
}
/**
* 興味があるイベントすべてについて、ここで登録する。
*/
private function registerEvents():void {
_bcStage = _bcExperience.getStage();
// Brightcove プレーヤ ステージおよび Google アカウント ID への参照を持つ Google トラッカを作成する
_tracker = new GATracker(_bcStage, ACCOUNT_ID, BRIDGE_MODE, DEBUG_MODE);
_bcVideo = player.getModule(APIModules.VIDEO_PLAYER) as VideoPlayerModule;
if (_bcVideo != null) {
_bcVideo.addEventListener(MediaEvent.BEGIN, onMediaBegin);
_bcVideo.addEventListener(MediaEvent.COMPLETE, onMediaComplete);
// 注記:ここで Brightcove プレーヤ イベント リスナーを追加できます
}
// BC メニュー イベントを追跡したい場合、ここで Menu モジュールへの参照を取得する
//_bcMenu = player.getModule(APIModules.MENU) as MenuModule;
fireEvent(EVENT_PLAYER_LOAD);
}
/**
* プレーヤがステージにアクセスできる場合のためのハンドラ。
*
* @param event ExperienceModule がディスパッチしたイベント。
*/
private function onAddedToStage(event:ExperienceEvent):void {
_bcExperience.removeEventListener(ExperienceEvent.ADDED_TO_STAGE, onAddedToStage);
registerEvents();
}
/**
* 新しいメディアが始まったときのためのハンドラ。
*
* @param event VideoPlayerModule がディスパッチしたイベント。
*/
private function onMediaBegin(event:MediaEvent):void {
fireEvent(EVENT_VIDEO_START);
}
/**
* メディアがはじめて完了したときのためのハンドラ。
*
* @param event VideoPlayerModule がディスパッチしたイベント。
*/
private function onMediaComplete(event:MediaEvent):void {
fireEvent(EVENT_VIDEO_COMPLETED);
}
/*
* プレーヤはインタラクションの準備が完了。ステージへのアクセスがないかチェックする。
*/
override protected function initialize():void {
_bcExperience = player.getModule(APIModules.EXPERIENCE) as ExperienceModule;
_bcStage = _bcExperience.getStage();
if (_bcStage == null) {
_bcExperience.addEventListener(ExperienceEvent.ADDED_TO_STAGE, onAddedToStage);
} else {
registerEvents();
}
}
}
}