Google Analytics dans Silverlight, simplement.

Google analytics est vraiment un programme d’analyse de statistique de site web très puissant.
Personnellement je l’utilise pour tous mes sites.

Pour l’utiliser c’est très simple il suffit d’ajouter le code suivant fournit par Google :

    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
        _gaq.push(['_trackPageview']);

        (function () {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();
    </script>

Pour une page html classique il n’y a plus rien à faire mais comment faire en Silverlight pour suivre à la trace tel bouton ou tel TabControl que l’on vient de presser ?

Très simplement je rajoute d’abord dans la page html qui héberge ma balise Object Silverlight le code javascript que l’on vient de voir à l’instant.
Puis on rajoute à la suite celui ci, toujours en javascript, qui nous permettra d’envoyer à google la pseudo page que nous sommes en train de visiter.

        // appel externe du tracker
        function TrackPage(strPseudoPage) {
            _gaq.push(['_trackPageview', strPseudoPage]);
        }

Il ne nous reste plus qu’à appeler la méthode « TrackPage » de la page HTML à partir de notre code Silverlight :

HtmlPage.Window.Invoke("TrackPage","UnNomDePageVirtuelle");

Dans l’exemple « UnNomDePageVirtuelle » représente le nom que l’on veut voir apparaitre dans Google analytics comme page virtuelle (c’est à dire comme si l’action était un accès à une page).

Pour finir on peut créer le Helper suivant :

using System;
using System.Windows.Browser;
using System.Windows;

    public static class GoogleAnalyticsHelper
    {
        /// <summary>
        /// PageTracker
        /// </summary>
        /// <param name="usercontrolToTrack"></param>

        public static void TrackPage(UIElement elementToTrack)
        {
            GoogleAnalyticsHelper.TrackPage(elementToTrack.GetType().FullName);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="pageNameToTrack"></param>

        public static void TrackPage(string pageNameToTrack)
        {
            HtmlPage.Window.Invoke("TrackPage", "/" + pageNameToTrack);
        }
    }

et l’appeler simplement comme suit :

GoogleAnalyticsHelper.TrackPage("DownloadingNodoXap");

ou pour les fainéants (dont je fais partie) en lui indiquant simplement le usercontrol (ou page) en cours par exemple.

GoogleAnalyticsHelper.TrackPage(this);

Soyez patient si vous voulez voir remonter vos informations dans Google analytics puisque les données visitées de la journée en cours sont visibles uniquement le lendemain.

Pour finir, il existe d’autre solution plus complexes mais plus puissantes aussi.Il y a notamment Microsoft Silverlight Analytics Framework, qui permet de lancer des requêtes à partir de WP7, de système déconnecté ou sur d’autre moteur d’analyse que Google Analytics. En revanche le manque de documentation sur le sujet est un peu pénible…

4 réponses à Google Analytics dans Silverlight, simplement.

  1.  

    une façon plus « élégante » à mon sens est d’utiliser Silverlight Analytics Framework.
    http://msaf.codeplex.com/

    Totalement géré par des behavior donc gérable par Blend super facilement.
    Un vrai plaisir à utiliser :).

  2.  

    oups…tu en parles à la fin ;).
    Oublie mon commentaire alors, par contre je ne suis pas d’accord pour le manque de doc, le nécessaire est là.

  3. Hi Niels, Pour la documentation j’ai cherché mais pas vraiment trouvé. Si tu as un ou plusieurs lien cela m’intéresse :)

     
  4.  

    Bonjour,

    Pour compléter un petit peu ce très bon article :
    Après avoir installé le package (disponible ici : http://msaf.codeplex.com/releases/view/63964), la documentation est disponible dans « Demarrer »=> »Tous les programmes »=> » Microsoft Silverlight Analytics Framework ». Personnellement je la trouve tout à fait suffisante.

    Dernier point, la première étape pour utiliser ce framework est de référencer le service Google Analytics dans les ApplicationLifetimeObjects de l’application Silverlight (fichier App.xaml) :

    // Le WebPropertyId est fourni par google après la création du compte Google Analytics.

    ATTENTION, vous devez bien sûr référencer les assembly qui vont bien (xmlns:mwa= »clr-namespace:Microsoft.WebAnalytics;assembly=Microsoft.WebAnalytics », xmlns:ga= »clr-namespace:Google.WebAnalytics;assembly=Google.WebAnalytics », xmlns:mwab= »clr-namespace:Microsoft.WebAnalytics.Behaviors;assembly=Microsoft.WebAnalytics.Behaviors » )

    Les trackers sont alors insérés dans les View (UserControl) sous forme de balises, sans passer par le codebehind ou les View-Model

leave your comment