1. Introduction
Les annonces sont un élément essentiel de l'expérience utilisateur globale de votre application. Une bonne implémentation des annonces peut améliorer l'expérience globale de votre application, et même la fidélisation et l'engagement des utilisateurs. Par exemple, les annonces avec récompense vous permettent de récompenser les utilisateurs qui regardent des annonces vidéo en leur offrant de la monnaie ou des éléments intégrés. Ils peuvent ainsi atteindre de nouveaux sommets alors qu'ils auraient pu être bloqués et abandonner l'application.
Toutefois, offrir une excellente expérience publicitaire n'est pas facile. Vous vous demandez peut-être à quelle fréquence vous devez diffuser ces annonces. Où et quand devez-vous les diffuser ? Quelle doit être la récompense ? Malheureusement, la réponse varie d'une application à l'autre et d'un emplacement à l'autre. Il n'existe pas de réponse unique.
Google Analytics pour Firebase, AdMob et plusieurs autres outils puissants et faciles à utiliser proposés par Firebase vous permettent d'affiner votre application de manière beaucoup plus simple et efficace en vous basant sur les données. Aujourd'hui, nous allons vous montrer comment vous lancer.
Objectifs de l'atelier
Cet atelier de programmation est le premier d'une série de trois qui vous aideront à créer une application appelée Awesome Drawing Quiz. Dans ce jeu, les joueurs doivent deviner le nom d'un dessin. Vous y découvrirez comment intégrer des annonces avec récompense et des services Firebase dans votre jeu.
Dans cet atelier de programmation, vous allez intégrer Google Analytics for Firebase pour enregistrer certains événements importants de l'application. Vous apprendrez également à lire les données analytiques de l'application affichées dans la console Firebase.
|
|
Points abordés
- Configurer Google Analytics pour Firebase dans votre application
- Enregistrer les événements d'application
- Lire les données analytiques sur les applications affichées dans la console Firebase
Prérequis
- Unity 2018.4.4f1 ou version ultérieure
- Xcode 10 ou version ultérieure (pour compiler la cible pour iOS)
- Un compte Google
- Un appareil de test équipé d'Android 5.0 ou version ultérieure avec un câble USB pour connecter votre appareil, ou un émulateur Android exécutant AVD(Android Virtual Device) avec une image système compatible avec le Play Store/les API Google
- Un appareil iOS ou un simulateur exécutant iOS 8.0 ou version ultérieure
Comment évalueriez-vous votre niveau d'expérience avec AdMob ?
Comment évalueriez-vous votre niveau d'expérience avec Firebase ?
2. Configurer l'environnement de développement
Télécharger le code
Cliquez sur le bouton suivant pour télécharger l'ensemble du code de cet atelier de programmation :
Décompressez le fichier ZIP téléchargé. Cette action décompresse le dossier racine, nommé admob-firebase-codelabs-unity-master.
Vous pouvez également cloner le dépôt GitHub à partir de la ligne de commande.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Le dépôt contient quatre dossiers :
101-base : code de démarrage que vous allez compiler dans cet atelier de programmation.
101-complete_and_102-base : code final de cet atelier de programmation et code de démarrage de l'atelier de programmation 102.
102-complete : code final de l'atelier de programmation 102.
Préparer les fichiers requis
Le Awesome Drawing Quiz utilise plusieurs codes Open Source, qui sont nécessaires pour compiler et exécuter le projet.
Ouvrez le terminal et accédez au répertoire racine du dépôt. Exécutez ensuite ./gradlew :prepareThirdPartyFiles (gradlew.bat :prepareThirdPartyFiles sur Windows) à partir du terminal pour copier les fichiers requis dans le projet.
Importer l'application de départ
Lancez Unity, puis sélectionnez Open (Ouvrir) sur l'écran d'accueil. Sélectionnez ensuite le répertoire 101-base à partir du code que vous avez téléchargé.
Le projet devrait maintenant être ouvert dans Unity.
3. Configurer un bloc d'annonces vidéo avec récompense (facultatif)
Pour plus de commodité, l'application de démarrage inclut déjà un bloc d'annonces vidéo avec récompense dédié. Vous êtes libre d'ignorer cette étape si vous ne souhaitez pas en créer un autre dans votre compte AdMob.
Configurer pour Android
Pour créer une application AdMob dans votre compte, veuillez suivre les instructions ci-dessous :
- Accédez à la console AdMob.
- Dans le menu Applications, cliquez sur Ajouter une application.
- Lorsque la question "Avez-vous publié votre application sur Google Play ou sur l'App Store ?" s'affiche, répondez NON.
- Nommez l'application Awesome Drawing Quiz,sélectionnez Android comme plate-forme, puis cliquez sur Add (Ajouter).
Une fois que vous avez créé une application AdMob dans votre compte, suivez les étapes décrites ci-dessous pour créer un bloc d'annonces vidéo avec récompense.
- Cliquez sur le menu Applications dans l'interface AdMob, puis sélectionnez Awesome Drawing Quiz dans la liste des applications.
- Cliquez sur le menu Blocs d'annonces, puis sur AJOUTER UN BLOC D'ANNONCES pour créer un bloc d'annonces vidéo avec récompense.
- Sélectionnez Avec récompense comme format d'annonce.

- Attribuez le nom de votre choix au bloc d'annonces. Ensuite, définissez le montant de la récompense sur 1 et l'élément de récompense sur "indice" (il s'agit de la récompense que l'application offre actuellement aux utilisateurs). Cliquez ensuite sur CRÉER UN BLOC D'ANNONCES pour créer un bloc d'annonces vidéo avec récompense.

- Une fois la clé créée, des instructions semblables à celles ci-dessous s'affichent.

- Revenez au projet Unity et mettez à jour les constantes d'ID d'application AdMob et d'ID de bloc d'annonces avec celles que vous avez créées à l'étape précédente.
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_ANDROID = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_ANDROID
private const string APP_ID = APP_ID_ANDROID;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
Configurer pour iOS
Pour créer une application AdMob dans votre compte, veuillez suivre les instructions ci-dessous :
- Accédez à la console AdMob.
- Dans le menu Applications, cliquez sur Ajouter une application.
- Lorsque la question "Avez-vous publié votre application sur Google Play ou sur l'App Store ?" s'affiche, répondez NON.
- Nommez l'application Awesome Drawing Quiz,sélectionnez iOS comme plate-forme, puis cliquez sur Add (Ajouter).
Une fois que vous avez créé une application AdMob dans votre compte, suivez les étapes décrites ci-dessous pour créer un bloc d'annonces vidéo avec récompense.
- Cliquez sur le menu Applications dans l'interface AdMob, puis sélectionnez Awesome Drawing Quiz dans la liste des applications.
- Cliquez sur le menu Blocs d'annonces, puis sur AJOUTER UN BLOC D'ANNONCES pour créer un bloc d'annonces vidéo avec récompense.
- Sélectionnez Avec récompense comme format d'annonce.

- Attribuez le nom de votre choix au bloc d'annonces. Ensuite, définissez le montant de la récompense sur 1 et l'élément de récompense sur "indice" (il s'agit de la récompense que l'application offre actuellement aux utilisateurs). Cliquez ensuite sur CRÉER UN BLOC D'ANNONCES pour créer un bloc d'annonces vidéo avec récompense.

- Une fois la clé créée, des instructions semblables à celles ci-dessous s'affichent.

- Revenez au projet Unity et mettez à jour les constantes d'ID d'application AdMob et d'ID de bloc d'annonces avec celles que vous avez créées à l'étape précédente.
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_IOS = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_IOS
private const string APP_ID = APP_ID_IOS;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
4. Ajouter le plug-in Google Mobile Ads Unity
Importer le plug-in
Pour diffuser des annonces AdMob dans l'application Unity, vous devez ajouter le plug-in Google Mobile Ads Unity au projet.
- Téléchargez le package Google Mobile Ads Unity Plugin 3.18.1. (Notez que cet atelier de programmation n'est peut-être pas compatible avec l'autre version du plug-in.)
- Dans le projet Unity Awesome Drawing Quiz. Dans le projet, accédez à Assets > Import Package > Custom Package (Éléments > Importer un package > Package personnalisé).
- Importez GoogleMobileAds.unitypackage dans le projet que vous avez téléchargé.
Configurer l'ID d'application AdMob
Dans l'éditeur Unity, sélectionnez Assets > Google Mobile Ads > Settings (Ressources > Google Mobile Ads > Paramètres) dans le menu.

Cochez la case Activé sous la section Google AdMob pour activer AdMob. Saisissez ensuite l'ID d'application AdMob comme suit :
- Android :
ca-app-pub-3940256099942544~3048611032 - iOS :
ca-app-pub-3940256099942544~2753522596

5. Configurer un projet Firebase
Créer un projet dans la console Firebase
- Accédez à la console Firebase.
- Sélectionnez Ajouter un projet, puis nommez votre projet "Awesome Drawing Quiz".
Ajouter l'application Unity
- Sur l'écran de présentation de votre nouveau projet, cliquez sur Ajouter Firebase à votre application Unity.
- Cochez la case "Enregistrer en tant qu'application iOS".
- Saisissez l'ID du bundle iOS au format suivant : com.codelab.awesomedrawingquiz.unity.
- Indiquez un nom à l'application : Awesome Drawing Quiz (Unity on iOS).
- Cochez la case "Enregistrer en tant qu'application Android".
- Saisissez le nom du package Android au format suivant : com.codelab.awesomedrawingquiz.unity.
- Indiquez un surnom pour l'application, par exemple Awesome Drawing Quiz (Unity on Android).
- Sélectionnez Enregistrer l'application pour enregistrer les applications Android et iOS.
Ajouter des fichiers de configuration Firebase au projet Unity
Ensuite, un écran s'affiche, vous permettant de télécharger un fichier de configuration contenant toutes les métadonnées Firebase nécessaires pour votre application. Téléchargez les fichiers google-service.json et GoogleService-Info.plist, puis déplacez-les tous les deux dans le dossier
Assets du projet Unity.

Ajouter le SDK Firebase Analytics
- Téléchargez le SDK Unity Firebase 5.5.0 et décompressez-le à l'emplacement de votre choix.
- Ouvrez le projet Unity Awesome Drawing Quiz, puis accédez à Assets > Import Package > Custom Package.
- Dans le SDK décompressé, importez le SDK Remote Config (
dotnet4/FirebaseAnalytics.unitypackage). - Dans la fenêtre "Import Unity package" (Importer un package Unity), cliquez sur Import (Importer).
6. Associer AdMob à un projet Firebase
Pour associer vos applications à Firebase :
- Connectez-vous à votre compte AdMob sur https://apps.admob.com.
- Dans la barre latérale, cliquez sur "Applications".
- Sélectionnez Quiz de dessin génial. Si elle ne figure pas dans la liste des applications récentes, cliquez sur "Afficher toutes les applications" pour la rechercher dans la liste de toutes les applications ajoutées à AdMob.
- Cliquez sur "Paramètres de l'application" dans la barre latérale.
- Cliquez sur "Associer à Firebase".
- Sélectionnez l'option Associer à un projet Firebase existant et créer une application Firebase. Sélectionnez ensuite le projet "Quiz de dessin génial" dans le menu déroulant.
- Une fois que vous avez cliqué sur le bouton CONTINUER, le message Association réussie s'affiche. Cliquez sur le bouton OK pour terminer.
Une fois votre application AdMob associée à un projet Firebase, vous pourrez accéder à des fonctionnalités supplémentaires dans les consoles AdMob et Firebase :
Fiche "Revenus" (AdMob)
La fiche "Revenus" vous permet d'obtenir une vue d'ensemble de toutes les sources de revenus possibles au même endroit. Voici les sources de revenus acceptées :
- AdMob (estimation)
- Réseaux publicitaires avec médiation (observés)
- Achats via une application
- Achats d'e-commerce

Fiche "Métriques utilisateur" (AdMob)
La fiche des métriques utilisateur vous permet de voir comment les modifications apportées à votre expérience publicitaire peuvent avoir un impact sur le comportement des utilisateurs.

Rapport sur les annonces avec récompense (AdMob)
Le rapport sur les annonces avec récompense propose différentes métriques qui aident les éditeurs à comprendre comment les utilisateurs interagissent avec leurs annonces avec récompense.

Fiche "Revenu total" (Firebase)
Une fois votre application AdMob associée à Firebase, la fiche "Revenus totaux" du tableau de bord Firebase affichera les revenus générés par AdMob, ainsi que ceux issus des achats via l'application et de l'e-commerce.

Rapports sur les événements publicitaires (Firebase)
Les événements spécifiques aux annonces (événements de clic, d'impression et de récompense) sont collectés automatiquement et peuvent être utilisés dans Google Analytics pour Firebase.

7. Exécuter le projet
Une fois que vous avez compilé et exécuté le projet, l'écran suivant s'affiche au démarrage de l'application.

Une fois que vous avez cliqué sur DÉMARRER UN JEU, un dessin s'affiche à l'écran. Votre mission consiste à deviner le nom du dessin en utilisant l'indice affiché en haut de l'écran, qui vous permet de déduire la première lettre et la longueur du nom du dessin.

Si vous ne savez pas quel est le nom du dessin, vous pouvez passer le niveau en cliquant sur le bouton PASSER.
Vous pouvez demander un indice supplémentaire pour vous aider à deviner la réponse. Vous pouvez obtenir un indice supplémentaire en cliquant sur le bouton INDICE et en regardant une annonce vidéo avec récompense. Une fois l'annonce regardée, une lettre supplémentaire sera dévoilée en guise de récompense.

8. Ajouter des événements d'application
Pour bien comprendre le parcours utilisateur dans le Quiz de dessin génial,vous allez définir quelques événements personnalisés qui suivent le comportement des utilisateurs dans le jeu :
Nom de l'événement | Déclenchement… | Paramètres |
game_start | Lorsqu'un utilisateur commence une nouvelle partie | aucun |
level_start | Lorsqu'un utilisateur commence un nouveau niveau (un nouveau quiz de dessin) dans une étape. (il y a six niveaux dans une étape) | level_name |
level_wrong_answer | Lorsqu'un utilisateur envoie une mauvaise réponse | level_name |
ad_reward_prompt | Lorsqu'un utilisateur appuie sur le bouton d'indice et est invité à regarder une annonce vidéo avec récompense | ad_unit_id |
ad_reward_impression | Lorsqu'un utilisateur commence à regarder une vidéo avec récompense | ad_unit_id |
level_success | Lorsqu'un utilisateur envoie une bonne réponse (termine un niveau) | level_name, number_of_attempts, elapsed_time_sec, hint_used |
level_fail | Lorsqu'un utilisateur passe un niveau | level_name, number_of_attempts, elapsed_time_sec, hint_used |
game_complete | à la fin du jeu ; | number_of_correct_answers |
Voici la description de chaque paramètre associé à chaque événement :
Nom de l'événement | Nom du paramètre | Description |
level_start | level_name | Nom du dessin affiché dans le niveau (par exemple, "banane") |
level_wrong_answer | level_name | Nom du dessin affiché dans le niveau (par exemple, "banane") |
ad_reward_prompt | ad_unit_id | ID de bloc d'annonces utilisé pour afficher une annonce vidéo avec récompense |
ad_reward_impression | ad_unit_id | ID de bloc d'annonces utilisé pour afficher une annonce vidéo avec récompense |
level_success | level_name | Nom du dessin affiché dans le niveau (par exemple, "banane") |
level_success | number_of_attempts | Nombre de tentatives pour terminer un niveau |
level_success | elapsed_time_sec | Temps écoulé pour terminer un niveau, en secondes |
level_success | hint_used | Indique si un utilisateur a utilisé une astuce (regardé une annonce vidéo avec récompense) ou non pour terminer un niveau (1 : a utilisé une astuce ; 0 : a terminé un niveau sans astuce). |
level_fail | level_name | Nom du dessin affiché dans le niveau (par exemple, "banane") |
level_fail | number_of_attempts | Nombre de tentatives pour terminer un niveau |
level_fail | elapsed_time_sec | Temps écoulé pour terminer un niveau, en secondes |
level_fail | hint_used | Indique si un utilisateur a utilisé une astuce (regardé une annonce vidéo avec récompense) ou non pour terminer un niveau (1 : a utilisé une astuce ; 0 : a terminé un niveau sans astuce). |
game_complete | number_of_correct_answers | Nombre de niveaux terminés dans le jeu |
Créer une classe d'assistance pour consigner les événements personnalisés
Pour enregistrer facilement l'événement Analytics, vous allez créer une classe d'assistance pour gérer les événements personnalisés.
Commencez par créer un dossier sous le dossier Assets/Scripts et nommez-le Analytics. Créez ensuite un script C# et nommez-le QuizAnalytics.cs dans le dossier Analytics.
Ajoutez le code ci-dessous au fichier QuizAnalytics.cs.
Analytics/QuizAnalytics.cs
using Firebase.Analytics;
namespace AwesomeDrawingQuiz.Analytics {
public class QuizAnalytics {
private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";
private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";
private const string EVENT_LEVEL_FAIL = "level_fail";
private const string EVENT_LEVEL_SUCCESS = "level_success";
private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";
private const string EVENT_GAME_START = "game_start";
private const string EVENT_GAME_COMPLETE = "game_complete";
private const string PARAM_AD_UNIT_ID = "ad_unit_id";
private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";
private const string PARAM_HINT_USED = "hint_used";
private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";
private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";
public const string SCREEN_MAIN = "main";
public const string SCREEN_GAME = "game";
public static void LogGameStart() {
FirebaseAnalytics.LogEvent(EVENT_GAME_START);
}
public static void LogLevelStart(string levelName) {
FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogLevelWrongAnswer(string levelName) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogAdRewardPrompt(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogAdRewardImpression(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogLevelSuccess(
string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogLevelFail(
string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogGameComplete(int numberOfCorrectAnswers) {
FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE,
PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
}
public static void SetScreenName(string screenName) {
FirebaseAnalytics.SetCurrentScreen(screenName, null);
}
}
}
Enregistrer des événements analytiques dans le jeu
Ouvrez le fichier Game.cs dans le dossier Assets/Scripts/Scenes. Pour utiliser la classe QuizAnalytics, qui se trouve sous l'espace de noms AwesomeDrawingQuiz.Analytics, ajoutez la directive "using" comme suit.
Scenes/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
Ensuite, dans la fonction Start(), appelez QuizAnalytics.SetScreenName() pour modifier le nom de l'écran actuel. Appelez également QuizAnalytics.LogGameStart() pour indiquer qu'une partie a commencé.
Scenes/Game.cs
void Start () {
// TODO: Log screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);
...
SetHintButtonEnabled(false);
// TODO: Log game_start event (101)
QuizAnalytics.LogGameStart();
...
}
Ensuite, dans les fonctions de rappel, ajoutez des appels pour enregistrer des événements personnalisés comme suit :
Scenes/Game.cs
public void OnClickHint() {
// TODO: Log ad_reward_prompt event (101)
QuizAnalytics.LogAdRewardPrompt(AdManager.AD_UNIT_ID);
...
}
...
public void OnAdStarted(object sender, EventArgs args) {
// TODO: Log ad_reward_impression event (101)
QuizAnalytics.LogAdRewardImpression(AdManager.AD_UNIT_ID);
}
...
public void OnGameOver(object sender, GameOverEventArgs args) {
// TODO: Log game_complete event (101)
QuizAnalytics.LogGameComplete(args.NumCorrectAnswers);
...
}
public void OnLevelCleared(object sender, LevelClearEventArgs args) {
// TODO: Log level_success event (101)
QuizAnalytics.LogLevelSuccess(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
...
}
public void OnLevelSkipped(object sender, LevelSkipEventArgs args) {
// TODO: Log level_fail event (101)
QuizAnalytics.LogLevelFail(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
}
public void OnNewLevel(object sender, NewLevelEventArgs args) {
// TODO: Log level_start event (101)
QuizAnalytics.LogLevelStart(args.Drawing.word);
...
}
public void OnWrongAnwser(object sender, WrongAnswerEventArgs args) {
// TODO: Log level_wrong_answer event (101)
QuizAnalytics.LogLevelWrongAnswer(args.Drawing.word);
...
}
Enfin, mettez à jour le fichier Main.cs dans le dossier Assets/Scripts/Scenes. Vous devez vous assurer que Firebase est prêt avant d'appeler des méthodes dans le SDK Firebase.
Scenes/Main.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
public class Main : MonoBehaviour {
...
void Start () {
Screen.sleepTimeout = SleepTimeout.SystemSetting;
#if UNITY_ANDROID
// Disable 'Start a game' button until
// Firebase dependencies are ready to use on the Android
buttonStartGame.interactable = false;
// TODO: Check Google Play Services on Android (101)
// Check Google Play Services on Android device is up to date
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available) {
Debug.Log("All Firebase services are available");
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
} else {
throw new System.InvalidOperationException(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
}
}).ContinueWith(task => {
// Enable 'Start a game' button
UnityMainThreadDispatcher.Instance()
.Enqueue(() => buttonStartGame.interactable = true);
});
#else
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
#endif
}
...
}
}
9. Déboguer les événements Analytics
Vous pouvez utiliser DebugView pour vérifier que les événements sont correctement enregistrés. DebugView vous permet d'afficher les données brutes des événements enregistrés par votre application sur les appareils de développement en temps quasi réel.
Cela est très utile à des fins de validation lors de la phase d'instrumentation du développement. Cela peut vous aider à découvrir les erreurs et les fautes dans votre implémentation Analytics.
Activer le mode débogage sur Android
En général, les événements enregistrés dans votre application sont regroupés par lots sur une période d'environ une heure et importés ensemble. Pour valider votre implémentation Analytics à la volée, vous devez activer le mode débogage sur votre appareil de développement afin d'importer les événements avec un minimum de retard.
Ouvrez d'abord l'outil Terminal dans Android Studio. Elle se trouve dans la barre d'outils en bas de l'écran.

Exécutez ensuite la commande suivante (assurez-vous que l'appareil Android de test est connecté à votre ordinateur ou que l'émulateur Android est en cours d'exécution) :
adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz
Ce comportement persiste jusqu'à ce que vous désactiviez explicitement le mode débogage en exécutant la commande suivante :
adb shell setprop debug.firebase.analytics.app .none.
Activer le mode débogage sur iOS
Pour activer le mode débogage d'Analytics sur votre appareil de développement, spécifiez l'argument de ligne de commande suivant dans Xcode :
-FIRDebugEnabled
Le mode de débogage est exécuté jusqu'à ce que vous le désactiviez directement en spécifiant l'argument de ligne de commande ci-dessous :
-FIRDebugDisabled
Déboguer les événements Analytics avec DebugView
Une fois le mode débogage activé sur votre appareil de test, accédez à la console Firebase et sélectionnez DebugView dans le menu. Ensuite, sur votre appareil de test, jouez à votre jeu pour voir les événements enregistrés et affichés dans le rapport DebugView.

Pour accéder à des informations détaillées sur chaque événement, cliquez sur son nom. Par exemple, la capture d'écran suivante montre les détails des paramètres associés à l'événement level_start.

Pour en savoir plus, veuillez consulter l'article du Centre d'aide sur DebugView.
10. Activer le reporting des paramètres
Google Analytics pour Firebase collecte le nombre total d'événements par défaut, mais vous devez activer explicitement les rapports pour les paramètres personnalisés pour chaque paramètre d'événement qui vous intéresse. Une fois cette option activée, Google Analytics pour Firebase affichera des fiches supplémentaires pour indiquer les statistiques des paramètres personnalisés.
Si vous souhaitez enregistrer des paramètres personnalisés pour un événement, procédez comme suit :
- Accédez à la console Firebase, puis sélectionnez le projet Awesome Drawing Quiz que vous avez créé précédemment.
- Dans le menu de navigation, cliquez sur Événements.
- Sur la ligne de l'événement à modifier, cliquez sur
> Modifier la création de rapports sur les paramètres.

- Dans le champ Attribuez un nom au paramètre, saisissez le nom du paramètre à enregistrer.
Remarque : Si aucune correspondance n'est trouvée, saisissez simplement le nom du paramètre, puis cliquez sur AJOUTER.
5. Consultez le tableau ci-dessous, puis définissez le champ Type sur Texte ou Nombre en conséquence. Pour les paramètres numériques, veillez également à définir le champ Unité de mesure. 6. Cliquez sur le bouton ENREGISTRER pour terminer la configuration.
Activez le reporting des paramètres pour chaque événement listé ci-dessous.
Nom de l'événement | Nom du paramètre | Type de paramètre | Unité de mesure |
level_start | level_name | Texte | N/A |
level_wrong_answer | level_name | Texte | N/A |
level_success | level_name | Texte | N/A |
level_success | number_of_attempts | Nombre | Standard |
level_success | elapsed_time_sec | Nombre | Secondes |
level_success | hint_used | Nombre | Standard |
level_fail | level_name | Texte | N/A |
level_fail | number_of_attempts | Nombre | Standard |
level_fail | elapsed_time_sec | Nombre | Secondes |
level_fail | hint_used | Nombre | Standard |
game_complete | number_of_correct_answers | Nombre | Standard |
L'exemple suivant montre comment configurer les rapports sur les paramètres personnalisés pour l'événement level_success :

Une fois que vous avez configuré les rapports sur les paramètres, vous pouvez afficher les paramètres associés à chaque événement pour lequel les rapports sur les paramètres sont activés.

11. Obtenir des insights à partir du rapport "Événements"
Comme vous avez ajouté quelques événements dans le jeu, vous devriez pouvoir répondre aux questions concernant le comportement des utilisateurs dans le jeu. Voici quelques insights que vous pouvez obtenir à partir du rapport sur les événements Firebase.
Quel niveau comporte le plus de mauvaises réponses ?
Pour répondre à cette question, vous devez déterminer le nombre d'événements level_wrong_answer déclenchés pour chaque niveau.
Cliquez sur level_wrong_answer dans le rapport sur les événements. Dans le rapport sur l'événement level_wrong_answer, recherchez la fiche level_name. Les valeurs associées au paramètre level_name s'affichent comme suit sur cette fiche.

Selon la capture d'écran ci-dessus, vous pouvez facilement constater que le niveau Horizon est celui qui comporte le plus de mauvaises réponses, ce qui signifie qu'il est difficile pour les utilisateurs par rapport aux autres niveaux.
Grâce aux insights obtenus, vous pouvez décider de ne pas proposer de niveaux difficiles aux utilisateurs débutants pour maintenir un taux de rétention élevé.
Combien de tentatives ont été nécessaires en moyenne pour terminer un niveau ?
Dans le Quiz de dessin génial, les utilisateurs peuvent envoyer la réponse à chaque niveau autant de fois qu'ils le souhaitent.
Comme vous avez activé le reporting des paramètres pour le paramètre number_of_attempts dans l'événement level_success, vous pouvez consulter les métriques détaillées pour ce paramètre.
Cliquez sur l'événement level_success dans le rapport sur les événements. Dans le rapport sur l'événement level_success, recherchez la fiche number_of_attemps. Le nombre moyen de tentatives s'affiche dans la fiche comme suit :

Vous pouvez utiliser ces informations pour optimiser la difficulté moyenne du jeu. Par exemple, si le nombre moyen de tentatives est trop proche de 1, vous pouvez envisager de rendre le jeu un peu plus difficile.
Les utilisateurs ont-ils essayé de résoudre la question en obtenant un indice, même s'ils n'ont pas réussi à terminer un niveau ?
Lorsqu'un utilisateur décide de passer un niveau, un événement level_fail est déclenché. Plusieurs raisons peuvent expliquer la décision de l'utilisateur.
Toutefois, comme le jeu peut lui donner un indice après qu'il a regardé une annonce vidéo avec récompense, il est important de savoir si l'utilisateur a essayé de terminer le niveau avec l'aide de l'indice, au moins.
Cliquez sur l'événement level_fail dans le rapport sur les événements. Dans le rapport sur l'événement level_fail, recherchez la fiche hint_used. Vous verrez le nombre moyen de paramètres d'événement hint_used. Notez que lorsqu'un indice est utilisé, sa valeur est définie sur 1, tandis qu'elle est définie sur 0 lorsqu'aucun indice n'a été utilisé.

Si les chiffres de la fiche hint_used sont proches de zéro, cela signifie que la récompense (indice) n'est pas très attrayante pour les utilisateurs. De plus, vous passez à côté d'une opportunité d'augmenter les revenus générés par les annonces vidéo avec récompense.
Par conséquent, vous devriez envisager de rendre la récompense plus utile aux utilisateurs, afin qu'ils puissent s'engager plus profondément dans le jeu et que les revenus générés par les annonces vidéo avec récompense puissent être augmentés.
Combien de niveaux ont été terminés en moyenne dans chaque jeu ?
Chaque jeu du Quiz de dessin génial comporte six niveaux. Une fois que l'utilisateur a terminé six niveaux (qu'il ait réussi ou échoué chaque niveau), un événement game_complete est déclenché avec number_of_correct_answers comme paramètre.
Étant donné que number_of_correct_answers indique le nombre de niveaux que l'utilisateur a terminés (en fournissant une réponse correcte), vous pouvez trouver la réponse en examinant les métriques du paramètre number_of_correct_answers.
Cliquez sur l'événement game_complete dans le rapport sur les événements. Dans le rapport sur l'événement game_complete, recherchez la fiche number_of_correct_answers. Vous verrez le nombre moyen de paramètres d'événement number_of_correct_answers.

Si le nombre moyen de niveaux terminés est trop faible, vous devriez envisager de réorganiser le jeu pour aider les joueurs à terminer un niveau, afin qu'ils puissent continuer à jouer sans se lasser.
12. Terminé !
Vous avez terminé l'atelier de programmation AdMob+Firebase 101 Unity. Vous trouverez le code final de cet atelier de programmation dans le dossier
101-complete_and_102-base.
Dans la prochaine partie de l'atelier de programmation AdMob+Firebase, vous apprendrez à utiliser un entonnoir pour visualiser le flux d'événements de l'application. Vous découvrirez également comment utiliser Remote Config et les tests A/B pour optimiser la valeur du paramètre dans le jeu sans avoir à mettre à jour l'application.