AdMob : Firebase 101 Unity : configuration Principes de base d'Analytics

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 ?

Débutant Intermédiaire Expert

Comment évalueriez-vous votre niveau d'expérience avec Firebase ?

Débutant Intermédiaire Expert

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 :

  • android_studio_folder.png101-base : code de démarrage que vous allez compiler dans cet atelier de programmation.
  • android_studio_folder.png101-complete_and_102-base : code final de cet atelier de programmation et code de démarrage de l'atelier de programmation 102.
  • android_studio_folder.png102-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 :

  1. Accédez à la console AdMob.
  2. Dans le menu Applications, cliquez sur Ajouter une application.
  3. Lorsque la question "Avez-vous publié votre application sur Google Play ou sur l'App Store ?" s'affiche, répondez NON.
  4. 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.

  1. Cliquez sur le menu Applications dans l'interface AdMob, puis sélectionnez Awesome Drawing Quiz dans la liste des applications.
  2. 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.
  3. Sélectionnez Avec récompense comme format d'annonce.

7672f41ec611101b.png

  1. 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.

6d067814a2c38264.png

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

4bc1b3b341a5a81c.png

  1. 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 :

  1. Accédez à la console AdMob.
  2. Dans le menu Applications, cliquez sur Ajouter une application.
  3. Lorsque la question "Avez-vous publié votre application sur Google Play ou sur l'App Store ?" s'affiche, répondez NON.
  4. 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.

  1. Cliquez sur le menu Applications dans l'interface AdMob, puis sélectionnez Awesome Drawing Quiz dans la liste des applications.
  2. 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.
  3. Sélectionnez Avec récompense comme format d'annonce.

7672f41ec611101b.png

  1. 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.

6d067814a2c38264.png

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

4bc1b3b341a5a81c.png

  1. 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.

  1. 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.)
  2. Dans le projet Unity Awesome Drawing Quiz. Dans le projet, accédez à Assets > Import Package > Custom Package (Éléments > Importer un package > Package personnalisé).
  3. 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.

44fc84fe88235c1f.png

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

a6ad7402d4daf330.png

5. Configurer un projet Firebase

Créer un projet dans la console Firebase

  1. Accédez à la console Firebase.
  2. Sélectionnez Ajouter un projet, puis nommez votre projet "Awesome Drawing Quiz".

Ajouter l'application Unity

  1. Sur l'écran de présentation de votre nouveau projet, cliquez sur Ajouter Firebase à votre application Unity.
  2. Cochez la case "Enregistrer en tant qu'application iOS".
  3. Saisissez l'ID du bundle iOS au format suivant : com.codelab.awesomedrawingquiz.unity.
  4. Indiquez un nom à l'application : Awesome Drawing Quiz (Unity on iOS).
  5. Cochez la case "Enregistrer en tant qu'application Android".
  6. Saisissez le nom du package Android au format suivant : com.codelab.awesomedrawingquiz.unity.
  7. Indiquez un surnom pour l'application, par exemple Awesome Drawing Quiz (Unity on Android).
  8. 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 android_studio_folder.pngAssets du projet Unity.

331c165d80ba105e.png

Ajouter le SDK Firebase Analytics

  1. Téléchargez le SDK Unity Firebase 5.5.0 et décompressez-le à l'emplacement de votre choix.
  2. Ouvrez le projet Unity Awesome Drawing Quiz, puis accédez à Assets > Import Package > Custom Package.
  3. Dans le SDK décompressé, importez le SDK Remote Config (dotnet4/FirebaseAnalytics.unitypackage).
  4. 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 :

  1. Connectez-vous à votre compte AdMob sur https://apps.admob.com.
  2. Dans la barre latérale, cliquez sur "Applications".
  3. 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.
  4. Cliquez sur "Paramètres de l'application" dans la barre latérale.
  5. Cliquez sur "Associer à Firebase".
  6. 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.
  7. 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

10fe118249e11150.png

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.

5f56366f1b31d4a1.png

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.

658a2868777690ea.png

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.

98cb283977b023a.png

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.

bf77bd8c00c1441b.png

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.

f5fbf4565c5d8647.png

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.

bbdf4d23fb08a519.png ad82d7e657945c4d.png

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.

8c33687361f83a13.png b048d6587c10e9df.png

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.

c8dc1b4f08a224b8.png

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.

827059255d09ac00.png

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.

475db00d05d03ab8.png

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 :

  1. Accédez à la console Firebase, puis sélectionnez le projet Awesome Drawing Quiz que vous avez créé précédemment.
  2. Dans le menu de navigation, cliquez sur Événements.
  1. Sur la ligne de l'événement à modifier, cliquez sur 73afe611adf58774.png > Modifier la création de rapports sur les paramètres.

aad40de06ee0c3ad.png

  1. 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.e066c761aae4797f.png 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 :

6d569c8c27df2914.png

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.

d1a37589d54bca6b.png

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.

25da426bbc0c612c.png

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 :

43de290f9f1a0ac9.png

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é.

313814372cd7c8a4.png

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.

d9eeaa019d1bceb4.png

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 android_studio_folder.png101-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.