Android : comment utiliser Google Analytics pour mesurer des fragments

Pas à pas, voici comment mettre en œuvre une méthode pour suivre le trafic sur des fragments d'applications Android via Google Analytics.

Google Analytics peut être utilisé pour suivre le trafic sur des fragments d'applications Android. Dans la version 4 du SDK Google Analytics pour Android, vous devez commencer par implémenter la méthode "getTracker" au sein de votre application.
Dans cette méthode, on va récupérer une instance de Google Analytics, puis on va appeler la méthode "newTracker" afin de créer le tracker. Cette méthode accepte en argument le nom du fichier XML qui contient les paramètres du tracker. Ce fichier s'appelle traditionnellement "analytics.xml", mais on peut le nommer autrement.

public class VotreApplication extends Application
{
    public synchronized Tracker getTracker() {

        try {
            final GoogleAnalytics googleAnalytics = GoogleAnalytics.getInstance(this);
            return googleAnalytics.newTracker(R.xml.analytics);

        }catch(final Exception e){
            Log.e(TAG, "Échec dans l'initialisation de l'API Google Analytics V4");
        }
        return null;
    }
}

La deuxième étape consiste à créer le fichier "analytics.xml". Ce fichier sera situé dans le dossier "res/xml" de votre application, et contient l'identifiant de suivi ainsi que des valeurs permettant de paramétrer le fonctionnement du tracker :

<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes">
  <!-- Insérer dans cette balise l'identifiant de suivi -->
  <string name="ga_trackingId">UA-XXXXXXXX-X</string>
  <!-- Cette propriété active le suivi automatique des activités -->
  <bool name="ga_autoActivityTracking">true</bool>
  <!-- Cette propriété désactive le suivi automatique des exceptions -->
  <bool name="ga_reportUncaughtExceptions">false</bool>
</resources>

Dans le fichier "build.gradle" de l'application, ajoutez la ligne suivante pour utiliser la version 7.3.0 des services Google Play, version minimum requise pour l'utilisation de la version 4 du SDK Google Analytics :
compile 'com.google.android.gms:play-services:7.3.0'

Pour terminer, il ne reste plus qu'à appeler le tracker dans le fragment. Il faut pour cela implémenter la méthode "onResume" qui est exécutée lorsqu'un utilisateur interagit avec le fragment. Dans cette méthode, on appellera la fonction "getTracker" créée plus haut dans votre application, puis on enverra les informations de suivi à Google Analytics :

public abstract class TrackedFragment extends Fragment{
    @Override
    public void onResume() {
        super.onResume();
        final Tracker tracker = instanceDeVotreApplication.getTracker();
        if(tracker != null){
            tracker.setScreenName(getClass().getSimpleName());
            tracker.send(new HitBuilders.ScreenViewBuilder().build());
        }
    }
}

Si vous utilisez la version 3 du SDK Google Analytics pour Android, les étapes ne sont pas les mêmes. Le fichier "analytics.xml" est le même, mais il doit obligatoirement être nommé de cette façon, un autre nom n'est pas possible. Il n'y a pas de code à écrire dans l'application, tout est situé dans le fragment. Dans votre fragment, importez toutes les bibliothèques de Google Analytics. Il faut ensuite créer un attribut privé de la classe "Tracker". Cet attribut sera instancié dans la méthode "onActivityCreated", et les données seront envoyées dans la méthode "onResume" :

import android.os.Bundle;
import android.support.v4.app.Fragment;
//Import des bibliothèques nécessaires pour utiliser Google Analytics
import com.google.analytics.tracking.android.EasyTracker;
import com.google.analytics.tracking.android.Fields;
import com.google.analytics.tracking.android.MapBuilder;
import com.google.analytics.tracking.android.Tracker;
public abstract class TrackedFragment extends Fragment{
     //Attribut correspondant au tracker
     private Tracker tracker;
     @Override
     public void onActivityCreated(final Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         //Instanciation du tracker
         this.tracker = EasyTracker.getInstance(getActivity());
     }
     @Override
     public void onResume() {
         super.onResume();
         //Envoi des données de suivi
         this.tracker.set(Fields.SCREEN_NAME, getClass().getSimpleName());
         this.tracker.send( MapBuilder.createAppView().build() );
     }
}

Tutoriels Analytics