Introduction
Google Tag Manager permet aux développeurs de modifier les valeurs de configuration de leur application mobile via son interface sans avoir à recréer et à renvoyer les fichiers binaires de l'application sur les places de marché d'applications.
Cette fonctionnalité est utile pour gérer les valeurs ou les indicateurs de configuration de votre application que vous devrez peut-être modifier à l'avenir, y compris:
- Divers paramètres d'interface utilisateur et chaînes d'affichage
- Tailles, emplacements ou types d'annonces diffusées dans votre application
- Divers paramètres de jeu
Les valeurs de configuration peuvent également être évaluées au moment de l'exécution à l'aide de règles, permettant ainsi des configurations dynamiques telles que:
- Utiliser la taille de l'écran pour déterminer la taille de la bannière publicitaire
- Utiliser la langue et l'emplacement pour configurer des éléments d'interface utilisateur
Google Tag Manager permet également d'implémenter de façon dynamique des balises et des pixels de suivi dans les applications. Les développeurs peuvent transmettre des événements importants dans une couche de données et décider ultérieurement quels pixels ou balises de suivi doivent être déclenchés.
Avant de commencer
Avant de commencer ce guide de démarrage, procédez comme suit:
- Installez le SDK Android.
- Téléchargez le SDK des services Google Play.
- Créer un compte Google Tag Manager
- Configurer un conteneur Google Tag Manager
Une fois ces étapes terminées, la suite de ce guide vous explique comment configurer et utiliser Google Tag Manager dans votre application Android.
Getting Started
Après avoir suivi ce guide de démarrage, vous saurez:
- Ajouter Google Tag Manager à votre projet
- Initialiser Tag Manager dans votre application
- Obtenir des valeurs de configuration à partir d'un conteneur Tag Manager
- Transférer des valeurs et des événements dans
dataLayer
- Prévisualiser, déboguer et publier votre conteneur
Ce guide utilise des extraits de code de l'exemple d'application Cute Animals
fourni avec le SDK des services Google Play.
La source complète de ce projet est disponible dans <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
.
1. Ajouter Google Tag Manager à votre projet
Pour ajouter Google Tag Manager à votre projet:
- Configurez le SDK des services Google Play.
- Si vous utilisez un IDE autre qu'
Android Studio, ajoutez les autorisations suivantes au fichier
AndroidManifest.xml
:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- Pour permettre à
InstallReferrerReceiver
d'appeler le récepteur Google Analytics afin de définir les données de la campagne, ajoutez les éléments suivants au fichierAndroidManifest.xml
:<!-- Used for install referrer tracking--> <service android:name="com.google.android.gms.tagmanager.InstallReferrerService" /> <receiver android:name="com.google.android.gms.tagmanager.InstallReferrerReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
2. Ajouter un fichier de conteneur par défaut à votre projet
Google Tag Manager utilise un conteneur par défaut lors de la première exécution de votre application. Le conteneur par défaut cesse d'être utilisé dès que l'application peut récupérer un nouveau conteneur sur le réseau.
Pour télécharger et ajouter un binaire de conteneur par défaut à votre application, procédez comme suit:
- Connectez-vous à l'interface Web de Google Tag Manager.
- Sélectionnez la version du conteneur que vous souhaitez télécharger.
- Cliquez sur le bouton Télécharger pour récupérer le binaire du conteneur.
- Ajoutez le fichier binaire du conteneur téléchargé à votre projet en tant que ressource brute.
- Si le sous-dossier
raw
sous<project-root>/res/
n'existe pas, créez-le. - Renommez le fichier binaire du conteneur si nécessaire. Il ne se compose que de lettres minuscules, de chiffres et de traits de soulignement.
- Copiez le fichier binaire du conteneur dans le dossier
<project-root>/res/raw
.
- Si le sous-dossier
Bien qu'il soit recommandé d'utiliser le fichier binaire, si votre conteneur ne contient ni règles ni balises, vous pouvez choisir d'utiliser un simple fichier JSON à la place.
3. Initialiser Google Tag Manager
Pour initialiser Google Tag Manager dans votre application:
- Obtenez le singleton
TagManager
:TagManager tagManager = TagManager.getInstance(this);
- Utilisez le singleton
TagManager
pour envoyer une requête de chargement d'un conteneur, en spécifiant un ID de conteneur Google Tag Manager ainsi que votre fichier de conteneur par défaut. L'ID du conteneur doit être en majuscules et correspondre exactement à celui qui figure dans l'interface Web de Google Tag Manager. L'appel àloadContainerPreferNonDefault()
est non bloquant et renvoie unPendingResult
:PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(CONTAINER_ID, R.raw.defaultcontainer_binary);
- Utilisez un
ResultCallback
pour renvoyer leContainerHolder
une fois le chargement terminé ou dépassé :// The onResult method will be called as soon as one of the following happens: // 1. a saved container is loaded // 2. if there is no saved container, a network container is loaded // 3. the 2-second timeout occurs pending.setResultCallback(new ResultCallback<ContainerHolder>() { @Override public void onResult(ContainerHolder containerHolder) { ContainerHolderSingleton.setContainerHolder(containerHolder); Container container = containerHolder.getContainer(); if (!containerHolder.getStatus().isSuccess()) { Log.e("CuteAnimals", "failure loading container"); displayErrorToUser(R.string.load_error); return; } ContainerLoadedCallback.registerCallbacksForContainer(container); containerHolder.setContainerAvailableListener(new ContainerLoadedCallback()); startMainActivity(); } }, TIMEOUT_FOR_CONTAINER_OPEN_MILLISECONDS, TimeUnit.MILLISECONDS);
Créer un singleton ContainerHolder
Vous ne devez gérer qu'une seule instance de
ContainerHolder
à chaque exécution de votre application. C'est pourquoi l'exemple ci-dessus utilise une classe utilitaireContainerHolderSingleton
pour gérer l'accès à l'instanceContainerHolder
. Voici à quoi ressemble cette classeContainerHolderSingleton
:package com.google.android.tagmanager.examples.cuteanimals; import com.google.android.gms.tagmanager.ContainerHolder; /** * Singleton to hold the GTM Container (since it should be only created once * per run of the app). */ public class ContainerHolderSingleton { private static ContainerHolder containerHolder; /** * Utility class; don't instantiate. */ private ContainerHolderSingleton() { } public static ContainerHolder getContainerHolder() { return containerHolder; } public static void setContainerHolder(ContainerHolder c) { containerHolder = c; } }
4. Obtenir des valeurs de configuration à partir du conteneur
Une fois le conteneur chargé, vous pouvez récupérer les valeurs de configuration à l'aide de l'une des méthodes Container.get<type>()
. Les valeurs de configuration sont définies à l'aide des variables de collection de valeurs de Google Tag Manager. Par exemple, la méthode suivante récupère la dernière couleur que nous avons décidé d'utiliser pour un élément d'interface utilisateur et la renvoie sous forme de nombre entier:
/** * Returns an integer representing a color. */ private int getColor(String key) { return colorFromColorName(containerHolder.getContainer().getString(key)); }
Ce code effectue deux opérations pour récupérer le nom de la couleur à partir du conteneur:
- Récupère les
Container
à partir deContainerHolder
à l'aide deContainerHolder.getContainer()
. - Récupère la valeur de la couleur à l'aide de
Container.getString(key)
, où vous avez défini la clé et la valeur dans l'interface Web de Google Tag Manager.
5. Transmettre des événements et des valeurs à la couche de données
Google Tag Manager fournit également un dataLayer
, dans lequel vous pouvez transmettre des informations sur votre application. Celles-ci pourront être lues dans d'autres parties de votre application ou utilisées pour déclencher les balises que vous avez configurées dans l'interface Web de Google Tag Manager.
Transmettre des valeurs à la couche de données
dataLayer
fournit une couche de persistance que vous pouvez utiliser pour stocker des paires clé-valeur que vous pouvez utiliser dans d'autres parties de votre application ou en tant qu'entrées dans des balises Google Tag Manager.
Pour transmettre une valeur à dataLayer
, procédez comme suit:
- Obtenez le singleton
DataLayer
:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Transférez l'événement à l'aide de
DataLayer.push()
:// Put the image_name into the data layer for future use. TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);
Pour obtenir une valeur à partir de dataLayer
, utilisez
DataLayer.get(key)
.
Transmettre des événements à la couche de données
Le transfert d'événements vers dataLayer
vous permet de séparer le code de votre application des balises que vous souhaitez peut-être déclencher en réponse à ces événements.
Par exemple, au lieu de coder en dur les appels de suivi des vues d'écran Google Analytics dans votre application, vous pouvez transmettre des événements d'écran à dataLayer
et définir vos balises de suivi via l'interface Web de Google Tag Manager. Vous avez ainsi la possibilité de modifier cette balise ou d'ajouter des balises supplémentaires qui répondent aux événements d'écran, sans mettre à jour le code de votre application.
Pour transmettre un événement à dataLayer
, procédez comme suit:
- Obtenez le singleton
DataLayer
:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Transférez l'événement à l'aide de
DataLayer.pushEvent()
:dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
DataLayer.mapOf()
est une méthode utilitaire qui vous permet de générer facilement un mappage de paires clé/valeur qui mettra à jour l'élémentdataLayer
lors du transfert de l'événement.
6. Prévisualisation, débogage et publication
Avant de publier une version de votre conteneur, vous pouvez le prévisualiser pour vous assurer qu'il fonctionne comme prévu. Google Tag Manager vous permet de prévisualiser les versions de votre conteneur en générant des liens et des codes QR dans l'interface Web, puis en les utilisant pour ouvrir votre application. Vous pouvez également activer un mode de journalisation détaillée pour déboguer tout comportement inattendu.
Prévisualisation…
Pour prévisualiser une version de votre conteneur, procédez comme suit:
- Ajout de l'aperçu
Activity
à votre fichierAndroidManifest
:<!-- Add preview activity. --> <activity android:name="com.google.android.gms.tagmanager.PreviewActivity" android:label="@string/app_name" android:noHistory="true"> <!-- optional, removes the previewActivity from the activity stack. --> <intent-filter> <data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity>
Veillez à modifier cette ligne pour inclure le nom du package de votre application:
<data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
- Générez un lien d'aperçu dans l'interface Web de Google Tag Manager.
- Connectez-vous à Google Tag Manager.
- Sélectionnez la version du conteneur à prévisualiser
- Cliquez sur le bouton Prévisualiser
- Saisissez le nom du package de votre application, puis cliquez sur Générer le lien de début d'aperçu.
- Utiliser le lien ou le code QR généré pour lancer votre application
- Vous pouvez quitter le mode Aperçu en suivant un lien généré par l'option Générer un lien d'aperçu final dans l'interface Web.
Débogage
Si vous devez résoudre les problèmes liés à l'implémentation de vos conteneurs, activez la journalisation détaillée en appelant
TagManager.setVerboseLoggingEnabled(true)
:
// Modify the log level of the logger to print out not only // warning and error messages, but also verbose, debug, info messages. tagManager.setVerboseLoggingEnabled(true);
Publication…
Après avoir prévisualisé votre conteneur et vérifié qu'il fonctionne comme prévu, vous pouvez le publier. Les valeurs de configuration de vos conteneurs, vos balises et vos événements seront mis en ligne pour les utilisateurs lors de la prochaine actualisation de leurs conteneurs. En savoir plus sur l'actualisation des conteneurs
Configuration avancée
Les sections suivantes décrivent les options de configuration avancées que vous souhaitez utiliser pour personnaliser davantage votre implémentation de Google Tag Manager.
Actualiser le conteneur
Par défaut, votre conteneur peut être actualisé toutes les 12 heures. Pour actualiser manuellement le conteneur, utilisez
ContainerHolder.refresh()
:
ContainerHolderSingleton.getContainerHolder().refresh();
Il s'agit d'un appel asynchrone qui ne sera pas renvoyé immédiatement. Pour réduire le trafic réseau, refresh()
ne peut être appelé qu'une fois toutes les 15 minutes. Sinon, il s'agit d'une opération no-op.