La compatibilité de la version 5.5 de PHP n'étant plus assurée par la communauté, nous vous recommandons vivement d'utiliser l'environnement d'exécution PHP 7 pour toute nouvelle application.

Intégrer Google Analytics

La plate-forme Google Analytics vous permet de mesurer les interactions des utilisateurs avec votre entreprise sur différents appareils et dans divers environnements. Elle fournit toutes les ressources informatiques nécessaires pour collecter, stocker et traiter les données sur ces interactions utilisateur, et générer des rapports les concernant.

La collecte de données analytiques peut s'effectuer côté client et côté serveur. Pour envoyer des données à Google Analytics, vous disposez d'API et de SDK simples à utiliser. En plus de ces outils, nous avons développé du code que vous pouvez exécuter dans vos applications App Engine pour envoyer facilement des données analytiques côté serveur à Google Analytics.

Collecter des données analytiques côté client

Les SDK et les API de collecte permettent de mesurer la manière dont les utilisateurs interagissent avec vos contenus et vos initiatives marketing. Une fois ces outils mis en œuvre, les données des interactions utilisateur sont accessibles dans Google Analytics ou via les API de création de rapports. Pour plus de détails sur la collecte de données analytiques côté client, sélectionnez le lien ci-dessous en fonction du type de votre client :

  • Suivi Web (analytics.js) : mesurez les interactions des utilisateurs avec des sites ou des applications Web.
  • Android - mesurez l'interaction de l'utilisateur avec les applications Android.
  • iOS : mesurez les interactions des utilisateurs avec les applications iOS.
  • Protocole de mesure : mesurez les interactions des utilisateurs dans n'importe quel environnement avec ce protocole de bas niveau.

Collecter des données analytiques côté serveur App Engine

Bien qu'App Engine fournisse déjà un mécanisme pour consigner les événements dans votre application, vous pouvez suivre des événements spécifiques côté serveur directement dans Google Analytics, afin de profiter, entre autres, des avantages suivants :

  • Analyse des données de l'historique : App Engine vous permet de configurer le nombre maximal de jours ou la taille de votre fichier journal. Une fois cette limite dépassée, vous n'avez plus accès à ces fichiers journaux. Le suivi des événements dans Google Analytics vous offre une visibilité à beaucoup plus long terme sur les événements passés.
  • Suivi des événements clés : les fichiers journaux peuvent devenir très chargés en détails, car plusieurs composants de votre application y écrivent des données. Le suivi des événements vous permet d'identifier les événements clés et certaines métadonnées que vous souhaitez contrôler.
  • Interface utilisateur puissante : tirez parti de l'interface utilisateur enrichie de Google Analytics pour visualiser et exporter ces événements côté serveur, et créer des rapports les concernant.

Pour ce faire, intégrez simplement l'exemple de code source ci-dessous dans votre application App Engine. Pour en savoir plus sur cette approche, consultez le guide du développeur Google Analytics, et plus particulièrement la section Suivi des événements.

Exemple de code source

Java

import com.google.appengine.api.urlfetch.URLFetchService;
import com.google.appengine.api.urlfetch.URLFetchServiceFactory;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.client.utils.URIBuilder;

@SuppressWarnings("serial")
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(
    name = "analytics",
    description = "Analytics: Send Analytics Event to Google Analytics",
    urlPatterns = "/analytics"
)
public class AnalyticsServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
    String trackingId = System.getenv("GA_TRACKING_ID");
    URIBuilder builder = new URIBuilder();
    builder
        .setScheme("http")
        .setHost("www.google-analytics.com")
        .setPath("/collect")
        .addParameter("v", "1") // API Version.
        .addParameter("tid", trackingId) // Tracking ID / Property ID.
        // Anonymous Client Identifier. Ideally, this should be a UUID that
        // is associated with particular user, device, or browser instance.
        .addParameter("cid", "555")
        .addParameter("t", "event") // Event hit type.
        .addParameter("ec", "example") // Event category.
        .addParameter("ea", "test action"); // Event action.
    URI uri = null;
    try {
      uri = builder.build();
    } catch (URISyntaxException e) {
      throw new ServletException("Problem building URI", e);
    }
    URLFetchService fetcher = URLFetchServiceFactory.getURLFetchService();
    URL url = uri.toURL();
    fetcher.fetch(url);
    resp.getWriter().println("Event tracked.");
  }
}

Python

def track_event(category, action, label=None, value=0):
    data = {
        'v': '1',  # API Version.
        'tid': GA_TRACKING_ID,  # Tracking ID / Property ID.
        # Anonymous Client Identifier. Ideally, this should be a UUID that
        # is associated with particular user, device, or browser instance.
        'cid': '555',
        't': 'event',  # Event hit type.
        'ec': category,  # Event category.
        'ea': action,  # Event action.
        'el': label,  # Event label.
        'ev': value,  # Event value, must be an integer
    }

    response = requests.post(
        'http://www.google-analytics.com/collect', data=data)

    # If the request fails, this will raise a RequestException. Depending
    # on your application's needs, this may be a non-error and can be caught
    # by the caller.
    response.raise_for_status()

@app.route('/')
def track_example():
    track_event(
        category='Example',
        action='test action')
    return 'Event tracked.'