<?xml version="1.0" encoding="utf-8"?> <!-- The account number has to be replaced with your own account number in GA eg account="UA-XXXXXXX-X" Example 1. Embed the gaforflash component, demonstrate pageview tracking. Tested against gaforflash-1.0.1.319 --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ga4flash="com.google.analytics.components.*" addedToStage="trackInitialView()" viewSourceURL="srcview/index.html"> <ga4flash:FlexTracker id="tracker" account="UA-111-222" mode="AS3" visualDebug="true" /> <mx:Script> <![CDATA[ public function trackInitialView():void { tracker.debug.minimizedOnStart = true; tracker.trackPageview("/version1"); } ]]> </mx:Script> <mx:Accordion x="31" y="43" width="380" height="423" change="tracker.trackPageview('/pane' + String(event.newIndex+1));"> <mx:Canvas label="ENGLISH VERSION" width="100%" height="100%"> <mx:Text text="Welcome to the english RIA."/> </mx:Canvas> <mx:Canvas label="SPANISH VERSION" width="100%" height="100%"> <mx:Text text="¡Bienvenidos a la RIA en Español!"/> </mx:Canvas> <mx:Canvas label="FRENCH VERSION" width="100%" height="100%"> <mx:Text text="Bienvenue sur la version française !"/> </mx:Canvas> </mx:Accordion> </mx:Application> |
Par défaut, l’application Flex se charge sur le panneau en anglais
L’application Flex incluant gaforflash
la valeur visualDebug="true"
, l’application fonctionne en mode débogage. L’API
FlexTracker
<ga4flash:FlexTracker id="tracker" account="UA-111-222" mode="AS3" visualDebug="true" /> |
id
: cette propriété permet de déclarer le FlexTracker
dans votre application Flex.account
: c’est l’id
ou identifiant de votre compte Google Analytics. On l’obtient généralement cette valeur lors de la création d’un compte ou d’un profile au sein d’un compte GA.mode
: cette variable est soit complétée avec la valeur : AS3
ou Bridge
. Lorsque vous ne maitrisez pas l’environnement dans lequel votre RIA va être chargée, il est préférable de mettre la valeur AS3
. Ainsi, si votre application doit être diffusé sur une plate-forme qui n’est pas la votre via un widget par exemple, c’est la type de configuration qu’il faut définir.
Pour le mode Bridge
n c’est lorsque les pages dans lesquelles vont se charger votre application contiennent un script de mesure Google Analytics. Une remarque, le mode Bridge
s’exécute à l’aide de la class ExternalInterface, il est donc important que le paramètre allowScriptAccess
soit correctement défini.
visualDebug
: cette propriété permet de faire fonctionner l’API gatorflash en mode débogage. Si le mode est défini sur true
, aucun des événements ne sera envoyé vers les serveurs de GA, toutes les données seront disponibles dans la fenêtre de débogage.Sur le paramètre mode
, il y a plus d’information disponible sur le site de gaforflash
Là encore, dans cette exemple de fichier .mxml
, il s’agit d’un compte de test : account="UA-111-222"
, vous pouvez le remplacer par votre propre compte GA. On va aussi de charger une vidéo :
.mxml
est la suivante video.source = "http://127.0.0.1/Flex/chevaux.flv";
.account="UA-XXXXXXX-X" |
Cette valeur initialise la mesure statistique de Google Analytics. Pour cette valeur, les paramètres passés sont les suivants : le premier paramètre du constructeur correspond dans l’exemple à la mx:Application
, ensuite on retrouve les paramètres précédents account
, mode
, visualDebug
tracker = new GATracker(this, "UA-111-222", "AS3", true);
la valeur visualDebug="true"
, l’application fonctionne en mode débogage. L’API
Le code de l’exemple 2
<?xml version="1.0" encoding="utf-8"?> <!-- Example 2. Use gaforflash's classes, demonstrate event tracking. Tested against gaforflash-1.0.1.319 --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" addedToStage="initExample2()" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import mx.events.MetadataEvent; import mx.controls.Button; import mx.events.VideoEvent; import mx.controls.VideoDisplay; import mx.containers.Panel; import com.google.analytics.GATracker; private var tracker:GATracker; private var readyTime:Number; private var video:VideoDisplay; public function initExample2():void { tracker = new GATracker(this, "UA-111-222", "AS3", true); //build video UI var panel:Panel = new Panel(); panel.title = "Example 2"; panel.setStyle("horizontalAlign", "center"); panel.x = 20; panel.y = 40; panel.width = 545; panel.height = 372; this.addChild(panel); video = new VideoDisplay(); video.autoPlay = true; video.width = 525; video.height = 300; video.autoRewind = false; video.addEventListener(VideoEvent.READY, handleReady); video.addEventListener(VideoEvent.COMPLETE, handleComplete); panel.addChild(video); var button:Button = new Button(); button.label = "Pause"; button.addEventListener(MouseEvent.CLICK, handlePause); panel.addChild(button); readyTime = new Date().time; // video.source = "http://farm.sproutbuilder.com/asset/JwDKrdjrDnJcRVxp.flv"; /* DEMO VIDEO ON LOCAL SERVER ON MAMP */ video.source = "http://127.0.0.1/Flex/chevaux.flv"; } public function handleReady(event:Event):void { // calculate time (in milliseconds) in which // the video was ready to play readyTime = new Date().time - readyTime; /* evenement_1 */ tracker.trackEvent("Videos", "ReadyTime", "Video1", readyTime); } public function handleComplete(event:Event):void { /* evenement_2 */ tracker.trackEvent("Videos", "Completed", "Video1"); } public function handlePause(event:MouseEvent):void { var button:Button = event.target as Button; if (button.label == "Pause") { video.stop(); button.label = "Resume"; /* evenement_3 */ tracker.trackEvent("Videos", "Paused", "Video1"); } else { video.play(); button.label = "Pause"; /* evenement_4 */ tracker.trackEvent("Videos", "Resumed", "Video1"); } } ]]> </mx:Script> </mx:Application> |
Cette exemple piste 4 événements : evenement_1
, evenement_2
, evenement_3
, evenement_4
evenement_1
=> Un événement est envoyé lorsque le moment où la vidéo est en chargement et sur le point d’être jouée.evenement_2
=> Un événement est envoyé lorsque la vidéo est intégralement jouée.evenement_3
=> Un événement est envoyé lorsque la vidéo est en pause.evenement_4
=> Un événement est envoyé lorsque la vidéo reprend.GATracker.trackEvent
C’est cette méthode qui permet d’envoyer des événements qui seront enregistrées dans GA. En détaillant la ligne de code ci-dessous, on va dresser une liste définissant les 4 paramètres de cette méthode.
tracker.trackEvent("Videos", "ReadyTime", "Video1", readyTime);
category
: une chaîne de caractères (string) représentant un groupe d’événements. Dans notre exemple la category
est Videos
action
: une chaîne de caractères (string) souvent combinée avec une catégorie permet de signaler des actions. Dans notre exemple, l’événement se nomme ReadyTime
label
: une chaîne de caractères, c’est une valeur optionnel qui permet de passer une information additionnelle sur la combinaison category/action
. Il s’agit de préciser que c’est la Video1
si par exemple votre application comporte imaginons 5 Vidéos numérotés comme suit : Video1, Video2…. Video5value
: un nombre non négatif, c’est une valeur optionnel qui associe une valeur numérique à un événement mesuré.Tous ces evements sont envoyés à Google Analytics. Il est donc possible de les retrouver dans la tableau de Bord de GA. La correspondance se fait comme suit :
evenement_1 s'enregistre dans le tableau de bord de Google Analytics sous le nom "ReadyTime"
evenement_2 s'enregistre dans le tableau de bord de Google Analytics sous le nom "Completed"
evenement_3 s'enregistre dans le tableau de bord de Google Analytics sous le nom "Paused"
evenement_4 s'enregistre dans le tableau de bord de Google Analytics sous le nom "Resumed"
Il est évident que Google Analytics Tracking for Flash
offre des capacités de tracking infinies dans une RIA faite en Flex. En utilisant le concept de page vue (pageview
) ne modifie en rien les bonnes pratiques liés à l’utilisation que vous en faites déjà sur un site “classique”.
pageview
vous permettra de mieux voir le trafic d’un point de vue quantitatif de vos utilisateurs.event
vous permettra de mieux comprendre la manière dont vos utilisateurs réagissent à vos interfaces Flex. C’est donc complément qualitatif, riche d’enseignements, pour comprendre la perception que vos utilisateurs ont de vos interfaces.