AdMob+Firebase 101 Unity: Einrichtung & Grundlagen von Analytics

1. Einführung

Anzeigen sind ein wichtiger Bestandteil der Nutzerfreundlichkeit Ihrer App. Gute Anzeigenimplementierungen können die Nutzerfreundlichkeit Ihrer App insgesamt verbessern und sogar die Nutzerbindung und das Nutzer-Engagement steigern. Mit Anzeigen mit Prämie können Sie Nutzer beispielsweise mit In-App-Währung oder ‑Artikeln belohnen, wenn sie sich Videoanzeigen ansehen. So können Nutzer neue Höhen erreichen, an denen sie sonst vielleicht gescheitert wären und die App verlassen hätten.

Es ist jedoch nicht einfach, eine optimale Nutzerfreundlichkeit von Werbeanzeigen zu erreichen. Sie haben vielleicht Fragen wie: Wie oft sollten diese Anzeigen ausgeliefert werden? Wo und wann sollten Sie sie präsentieren? Was soll der Preis sein? Leider ist die Antwort von App zu App und von Placement zu Placement unterschiedlich. Es gibt keine einheitliche Antwort.

Mit Google Analytics for Firebase, AdMob und den vielen anderen leistungsstarken und benutzerfreundlichen Tools von Firebase ist es viel einfacher geworden, Ihre App datengestützt zu optimieren. Heute zeigen wir Ihnen, wie Sie loslegen können.

Umfang

Dieses Codelab ist das erste von drei Codelabs, in denen Sie eine App namens Awesome Drawing Quiz entwickeln. In diesem Spiel müssen die Spieler den Namen der Zeichnung erraten. Darin wird gezeigt, wie Sie Anzeigen mit Prämie und Firebase-Dienste in Ihr Spiel einbinden können.

In diesem Codelab integrieren Sie Google Analytics for Firebase, um einige wichtige App-Ereignisse aufzuzeichnen. Außerdem erfahren Sie, wie Sie die in der Firebase Console angezeigten App-Analysen lesen.

Lerninhalte

  • Google Analytics for Firebase in Ihrer App einrichten
  • App-Ereignisse erfassen
  • App-Analysen in der Firebase Console lesen

Voraussetzungen

  • Unity 2018.4.4f1 oder höher
  • Xcode 10 oder höher (zum Erstellen des Ziels für iOS)
  • Ein Google-Konto
  • Ein Testgerät mit Android 5.0 oder höher und ein USB-Kabel zum Verbinden des Geräts oder ein Android-Emulator mit einem AVD(Android Virtual Device) mit einem System-Image, das den Play Store bzw. Google APIs unterstützt
  • Ein iOS-Gerät oder ein Simulator mit iOS 8.0 oder höher

Wie würden Sie Ihre Erfahrung mit AdMob bewerten?

Anfänger Mittelstufe Fortgeschrittene

Wie würden Sie Ihre Erfahrung mit Firebase bewerten?

Anfänger Mittelstufe Fortgeschritten

2. Entwicklungsumgebung einrichten

Code herunterladen

Klicken Sie auf die folgende Schaltfläche, um den gesamten Code für dieses Codelab herunterzuladen:

Entpacken Sie die heruntergeladene ZIP-Datei. Dadurch wird ein Stammordner mit dem Namen admob-firebase-codelabs-unity-master entpackt.

… oder klonen Sie das GitHub-Repository über die Befehlszeile.

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity

Das Repository enthält vier Ordner:

  • android_studio_folder.png101-base: Der Startcode, auf dem Sie in diesem Codelab aufbauen.
  • android_studio_folder.png101-complete_and_102-base: Der vollständige Code für dieses Codelab und der Starter für das Codelab 102.
  • android_studio_folder.png102-complete: Der vollständige Code für das Codelab 102.

Erforderliche Dateien vorbereiten

Für das Awesome Drawing Quiz werden mehrere Open-Source-Codes verwendet, die zum Kompilieren und Ausführen des Projekts erforderlich sind.

Öffnen Sie das Terminal und wechseln Sie zum Stammverzeichnis des Repositorys. Führen Sie dann ./gradlew :prepareThirdPartyFiles (gradlew.bat :prepareThirdPartyFiles unter Windows) über das Terminal aus, um die erforderlichen Dateien in das Projekt zu kopieren.

Start-App importieren

Starten Sie Unity und wählen Sie auf dem Begrüßungsbildschirm Öffnen aus. Wählen Sie dann das Verzeichnis 101-base aus dem heruntergeladenen Code aus.

Das Projekt sollte jetzt in Unity geöffnet sein.

3. Anzeigenblock für Videoanzeigen mit Prämie einrichten (optional)

Die Starter-App enthält bereits einen dedizierten Anzeigenblock für Videoanzeigen mit Prämie. Sie können diesen Schritt überspringen, wenn Sie kein neues Konto in Ihrem AdMob-Konto erstellen möchten.

Einrichtung für Android

So erstellen Sie eine neue AdMob-App in Ihrem Konto:

  1. Rufen Sie die AdMob Console auf.
  2. Klicken Sie im Menü Apps auf App hinzufügen.
  3. Wenn Sie gefragt werden, ob Sie Ihre App bei Google Play oder im App Store veröffentlicht haben, antworten Sie mit NEIN.
  4. Geben Sie der App den Namen Awesome Drawing Quiz, wählen Sie Android als Plattform aus und klicken Sie dann auf Hinzufügen.

Nachdem Sie eine AdMob-App in Ihrem Konto erstellt haben, folgen Sie der Anleitung unten, um einen neuen Anzeigenblock für Videos mit Prämie zu erstellen.

  1. Klicken Sie im AdMob-Frontend auf das Menü Apps und wählen Sie dann Awesome Drawing Quiz aus der App-Liste aus.
  2. Klicken Sie auf das Menü Anzeigenblöcke und dann auf ANZEIGENBLOCK HINZUFÜGEN, um einen neuen Anzeigenblock für Videoanzeigen mit Prämie zu erstellen.
  3. Wählen Sie als Anzeigenformat Mit Prämie aus.

7672f41ec611101b.png

  1. Geben Sie den gewünschten Namen für den Anzeigenblock ein. Legen Sie dann die Prämienanzahl auf 1 und den Prämienartikel auf „Hinweis“ fest. Das ist die Prämie, die die App derzeit Nutzern gewährt. Klicken Sie auf ANZEIGENBLOCK ERSTELLEN, um einen neuen Anzeigenblock für Anzeigen mit Prämie zu erstellen.

6d067814a2c38264.png

  1. Wenn die Anleitung erfolgreich erstellt wurde, sehen Sie eine Meldung wie die folgende.

4bc1b3b341a5a81c.png

  1. Kehren Sie zum Unity-Projekt zurück und aktualisieren Sie die Konstanten für die AdMob-App-ID und die Anzeigenblock-ID mit den Werten, die Sie im vorherigen Schritt erstellt haben.

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>";

        ...
    }
}

Einrichtung für iOS

So erstellen Sie eine neue AdMob-App in Ihrem Konto:

  1. Rufen Sie die AdMob Console auf.
  2. Klicken Sie im Menü Apps auf App hinzufügen.
  3. Wenn Sie gefragt werden, ob Sie Ihre App bei Google Play oder im App Store veröffentlicht haben, antworten Sie mit NEIN.
  4. Geben Sie der App den Namen Awesome Drawing Quiz, wählen Sie iOS als Plattform aus und klicken Sie dann auf Hinzufügen.

Nachdem Sie eine AdMob-App in Ihrem Konto erstellt haben, folgen Sie der Anleitung unten, um einen neuen Anzeigenblock für Videos mit Prämie zu erstellen.

  1. Klicken Sie im AdMob-Frontend auf das Menü Apps und wählen Sie dann Awesome Drawing Quiz aus der App-Liste aus.
  2. Klicken Sie auf das Menü Anzeigenblöcke und dann auf ANZEIGENBLOCK HINZUFÜGEN, um einen neuen Anzeigenblock für Videoanzeigen mit Prämie zu erstellen.
  3. Wählen Sie als Anzeigenformat Mit Prämie aus.

7672f41ec611101b.png

  1. Geben Sie den gewünschten Namen für den Anzeigenblock ein. Legen Sie dann die Prämienanzahl auf 1 und den Prämienartikel auf „Hinweis“ fest. Das ist die Prämie, die die App derzeit Nutzern gewährt. Klicken Sie auf ANZEIGENBLOCK ERSTELLEN, um einen neuen Anzeigenblock für Anzeigen mit Prämie zu erstellen.

6d067814a2c38264.png

  1. Wenn die Anleitung erfolgreich erstellt wurde, sehen Sie eine Meldung wie die folgende.

4bc1b3b341a5a81c.png

  1. Kehren Sie zum Unity-Projekt zurück und aktualisieren Sie die Konstanten für die AdMob-App-ID und die Anzeigenblock-ID mit den Werten, die Sie im vorherigen Schritt erstellt haben.

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. Google Mobile Ads Unity-Plug-in hinzufügen

Plug‑in importieren

Wenn Sie AdMob-Anzeigen in der Unity-App ausliefern möchten, müssen Sie das Google Mobile Ads Unity-Plug-in in das Projekt einfügen.

  1. Laden Sie das Google Mobile Ads Unity-Plug-in 3.18.1-Paket herunter. Hinweis: Dieses Codelab ist möglicherweise nicht mit der anderen Version des Plug-ins kompatibel.
  2. Im Unity-Projekt Awesome Drawing Quiz. Rufen Sie im Projekt Assets > Import Package > Custom Package auf.
  3. Importieren Sie die Datei GoogleMobileAds.unitypackage in das heruntergeladene Projekt.

AdMob-App-ID konfigurieren

Wählen Sie im Unity-Editor im Menü Assets > Google Mobile Ads > Einstellungen aus.

44fc84fe88235c1f.png

Aktivieren Sie AdMob, indem Sie im Bereich Google AdMob das Kästchen Aktiviert anklicken. Geben Sie dann die AdMob-App-ID so ein:

  • Android: ca-app-pub-3940256099942544~3048611032
  • iOS: ca-app-pub-3940256099942544~2753522596

a6ad7402d4daf330.png

5. Firebase-Projekt einrichten

Neues Projekt in der Firebase Console erstellen

  1. Rufen Sie die Firebase Console auf.
  2. Wählen Sie Projekt hinzufügen aus und geben Sie dem Projekt den Namen „Awesome Drawing Quiz“.

Unity-App hinzufügen

  1. Klicken Sie auf der Übersichtsseite Ihres neuen Projekts auf Firebase zu Ihrer Unity-App hinzufügen.
  2. Klicken Sie das Kästchen „Als iOS-App registrieren“ an.
  3. Geben Sie die iOS-Bundle-ID so ein: com.codelab.awesomedrawingquiz.unity
  4. Geben Sie einen App-Alias an, z. B. Awesome Drawing Quiz (Unity on iOS).
  5. Klicken Sie das Kästchen „Als Android-App registrieren“ an.
  6. Geben Sie den Android-Paketnamen so ein: com.codelab.awesomedrawingquiz.unity
  7. Geben Sie einen App-Alias an, z. B. Awesome Drawing Quiz (Unity on Android).
  8. Wählen Sie App registrieren aus, um sowohl Android- als auch iOS-Apps zu registrieren.

Firebase-Konfigurationsdateien zum Unity-Projekt hinzufügen

Als Nächstes wird ein Bildschirm angezeigt, auf dem Sie eine Konfigurationsdatei herunterladen können, die alle erforderlichen Firebase-Metadaten für Ihre App enthält. Laden Sie die Datei google-service.json und die Datei GoogleService-Info.plist herunter und verschieben Sie beide in den Ordner android_studio_folder.pngAssets im Unity-Projekt.

331c165d80ba105e.png

Firebase Analytics SDK hinzufügen

  1. Laden Sie das Firebase Unity SDK 5.5.0 herunter und entpacken Sie es an einem für Sie günstigen Ort.
  2. Öffnen Sie das Unity-Projekt Awesome Drawing Quiz und rufen Sie Assets > Import Package > Custom Package auf.
  3. Importieren Sie das Remote Config SDK (dotnet4/FirebaseAnalytics.unitypackage) aus dem entpackten SDK.
  4. Klicken Sie im Fenster „Import Unity package“ (Unity-Paket importieren) auf Import (Importieren).

6. AdMob mit einem Firebase-Projekt verknüpfen

So verknüpfen Sie Ihre Apps mit Firebase:

  1. Melden Sie sich unter https://apps.admob.com in Ihrem AdMob-Konto an.
  2. Klicken Sie in der Seitenleiste auf „Apps“.
  3. Wählen Sie Awesome Drawing Quiz aus. Falls die App nicht in der Liste der zuletzt verwendeten Apps aufgeführt ist, können Sie auf „Alle Apps anzeigen“ klicken, um eine Liste aller Apps zu durchsuchen, die Sie AdMob hinzugefügt haben.
  4. Klicken Sie in der Seitenleiste auf „App-Einstellungen“.
  5. Klicken Sie auf „Mit Firebase verknüpfen“.
  6. Wählen Sie die Option Mit einem bestehenden Firebase-Projekt verknüpfen und eine neue Firebase-App erstellen aus. Wählen Sie dann im Drop-down-Menü das Projekt Awesome Drawing Quiz aus.
  7. Nachdem Sie auf die Schaltfläche WEITER geklickt haben, wird die Meldung Erfolgreich verknüpft angezeigt. Klicken Sie zum Beenden auf die Schaltfläche FERTIG.

Wenn Sie Ihre AdMob-App mit einem Firebase-Projekt verknüpfen, werden in der AdMob- und der Firebase Console zusätzliche Funktionen freigeschaltet:

Karte „Einnahmen“ (AdMob)

Auf der Karte „Einnahmen“ können Sie sich alle möglichen Einnahmequellen an einem Ort ansehen. Folgende Umsatzquellen werden unterstützt:

  • AdMob (geschätzt)
  • Vermittlungsnetzwerke (beobachtet)
  • In-App-Käufe
  • E-Commerce-Käufe

10fe118249e11150.png

Karte mit Nutzermesswerten (AdMob)

Auf der Karte mit Nutzermesswerten sehen Sie, wie sich Änderungen an der Anzeigendarstellung auf das Nutzerverhalten auswirken.

5f56366f1b31d4a1.png

Bericht zu Anzeigen mit Prämie (AdMob)

Der Bericht zu Anzeigen mit Prämie enthält eine Vielzahl von Messwerten, mit denen Publisher nachvollziehen können, wie Nutzer mit ihren Anzeigen mit Prämie interagieren.

658a2868777690ea.png

Karte „Gesamtumsatz“ (Firebase)

Nachdem Sie Ihre AdMob-App mit Firebase verknüpft haben, wird auf der Karte „Gesamtumsatz“ im Firebase-Dashboard der Umsatz aus AdMob zusammen mit In-App-Käufen und E-Commerce-Käufen angezeigt.

98cb283977b023a.png

Berichte zu Werbeereignissen (Firebase)

Anzeigenspezifische Ereignisse (Klick-, Impression- und Prämienevents) werden automatisch erfasst und können in Google Analytics for Firebase verwendet werden.

bf77bd8c00c1441b.png

7. Projekt ausführen

Nachdem Sie das Projekt kompiliert und ausgeführt haben, wird beim Starten der App der folgende Bildschirm angezeigt.

f5fbf4565c5d8647.png

Wenn Sie auf SPIEL STARTEN klicken, wird eine Zeichnung auf dem Bildschirm angezeigt. Ihre Aufgabe ist es, den Namen der Zeichnung anhand des Hinweises oben zu erraten. Daraus können Sie den ersten Buchstaben und die Länge des Namens der Zeichnung ableiten.

bbdf4d23fb08a519.png ad82d7e657945c4d.png

Wenn Sie keine Ahnung haben, wie die Zeichnung heißt, können Sie das Level überspringen, indem Sie auf die Schaltfläche ÜBERSPRINGEN klicken.

Vielleicht möchten Sie einen zusätzlichen Hinweis, der Ihnen hilft, die Antwort zu erraten. Wenn Sie auf die Schaltfläche HINWEIS klicken und sich eine Videoanzeige mit Prämie ansehen, erhalten Sie einen zusätzlichen Hinweis. Nachdem Sie sich die Anzeige angesehen haben, wird als Belohnung ein zusätzlicher Buchstabe enthüllt.

8c33687361f83a13.png b048d6587c10e9df.png

8. App-Ereignisse hinzufügen

Um die User Journey im Awesome Drawing Quiz besser nachvollziehen zu können, definieren Sie einige benutzerdefinierte Ereignisse, mit denen das Nutzerverhalten im Spiel erfasst wird:

Ereignisname

Ausgelöst…

Parameter

game_start

Ein Nutzer startet ein neues Spiel.

Keine

level_start

Ein Nutzer beginnt ein neues Level (ein neues Zeichenquiz) in einer Phase. (es gibt 6 Level in einer Phase)

level_name

level_wrong_answer

Ein Nutzer gibt eine falsche Antwort ein.

level_name

ad_reward_prompt

wenn ein Nutzer auf die Schaltfläche für den Hinweis tippt und aufgefordert wird, sich eine Videoanzeige mit Prämie anzusehen

ad_unit_id

ad_reward_impression

wenn ein Nutzer sich eine Videoanzeige mit Prämie ansieht

ad_unit_id

level_success

Ein Nutzer gibt eine richtige Antwort (schließt ein Level ab).

level_name, number_of_attempts, elapsed_time_sec, hint_used

level_fail

Ein Nutzer überspringt ein Level.

level_name, number_of_attempts, elapsed_time_sec, hint_used

game_complete

wenn das Spiel vorbei ist.

number_of_correct_answers

Im Folgenden finden Sie eine Beschreibung der einzelnen Parameter, die mit den einzelnen Ereignissen verknüpft sind:

Ereignisname

Parametername

Beschreibung

level_start

level_name

Name der Zeichnung, die im Level angezeigt wird (z.B. „Banane“)

level_wrong_answer

level_name

Name der Zeichnung, die im Level angezeigt wird (z.B. „Banane“)

ad_reward_prompt

ad_unit_id

Eine Anzeigenblock-ID, die zum Ausliefern von Videoanzeigen mit Prämie verwendet wird

ad_reward_impression

ad_unit_id

Eine Anzeigenblock-ID, die zum Ausliefern von Videoanzeigen mit Prämie verwendet wird

level_success

level_name

Name der Zeichnung, die im Level angezeigt wird (z.B. „Banane“)

level_success

number_of_attempts

Anzahl der Versuche, ein Level zu bestehen

level_success

elapsed_time_sec

Verstrichene Zeit zum Abschließen eines Levels in Sekunden

level_success

hint_used

Gibt an, ob ein Nutzer einen Hinweis (Anzeige mit Prämie) verwendet hat, um ein Level zu bestehen (1: Hinweis verwendet / 0: Level ohne Hinweis bestanden)

level_fail

level_name

Name der Zeichnung, die im Level angezeigt wird (z.B. „Banane“)

level_fail

number_of_attempts

Anzahl der Versuche, ein Level zu bestehen

level_fail

elapsed_time_sec

Verstrichene Zeit zum Abschließen eines Levels in Sekunden

level_fail

hint_used

Gibt an, ob ein Nutzer einen Hinweis (Anzeige mit Prämie) verwendet hat, um ein Level zu bestehen (1: Hinweis verwendet / 0: Level ohne Hinweis bestanden)

game_complete

number_of_correct_answers

Anzahl der im Spiel abgeschlossenen Level

Helferklasse zum Erfassen benutzerdefinierter Ereignisse erstellen

Um das Analytics-Ereignis einfach zu erfassen, erstellen Sie eine Hilfsklasse zur Verwaltung benutzerdefinierter Ereignisse.

Erstellen Sie zuerst einen neuen Ordner im Ordner Assets/Scripts und nennen Sie ihn Analytics. Erstellen Sie dann ein neues C#-Skript und nennen Sie es QuizAnalytics.cs im Ordner Analytics.

Fügen Sie den folgenden Code in die QuizAnalytics.cs-Datei ein.

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);
        }
    }
}

Analytics-Ereignisse im Spiel protokollieren

Öffnen Sie die Datei Game.cs im Ordner Assets/Scripts/Scenes. Wenn Sie die Klasse QuizAnalytics verwenden möchten, die sich im Namespace AwesomeDrawingQuiz.Analytics befindet, fügen Sie die using-Anweisung wie folgt hinzu.

Scenes/Game.cs

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
   ...
}

Rufen Sie als Nächstes in der Funktion Start() die Funktion QuizAnalytics.SetScreenName() auf, um den Namen des aktuellen Bildschirms zu ändern. Rufen Sie außerdem QuizAnalytics.LogGameStart() auf, um anzugeben, dass ein Spiel begonnen hat.

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();
    
    ...
}

Fügen Sie als Nächstes in den Callback-Funktionen Aufrufe zum Protokollieren benutzerdefinierter Ereignisse hinzu:

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);

    ...
}

Aktualisieren Sie schließlich die Datei „Main.cs“ im Ordner Assets/Scripts/Scenes. Sie sollten prüfen, ob Firebase bereit ist, bevor Sie Methoden im Firebase SDK aufrufen.

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. Analyseereignisse debuggen

Mit DebugView können Sie prüfen, ob Ereignisse richtig protokolliert werden. Mit DebugView können Sie die von Ihrer App auf Entwicklungsgeräten protokollierten Rohdaten von Ereignissen nahezu in Echtzeit ansehen.

Das ist sehr nützlich für die Validierung während der Instrumentierungsphase der Entwicklung und kann Ihnen helfen, Fehler in Ihrer Analytics-Implementierung zu erkennen.

Debug-Modus unter Android aktivieren

In der Regel werden in Ihrer App erfasste Ereignisse über einen Zeitraum von etwa einer Stunde zusammengefasst und gemeinsam hochgeladen. Wenn Sie Ihre Analytics-Implementierung im Handumdrehen prüfen möchten, müssen Sie den Debug-Modus auf Ihrem Entwicklungsgerät aktivieren, damit Ereignisse mit minimalen Verzögerungen hochgeladen werden.

Öffnen Sie zuerst das Terminaltool in Android Studio. Sie befindet sich in der unteren Symbolleiste.

c8dc1b4f08a224b8.png

Führen Sie dann den folgenden Befehl aus. Achten Sie darauf, dass das Test-Android-Gerät mit Ihrem Computer verbunden ist oder der Android-Emulator ausgeführt wird:

adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz

Der Fehlerbehebungsmodus ist aktiv, bis Sie ihn ausdrücklich beenden, indem Sie den folgenden Befehl ausführen:

adb shell setprop debug.firebase.analytics.app .none.

Debug-Modus auf iOS-Geräten aktivieren

Wenn Sie den Fehlerbehebungsmodus für Analytics auf Ihrem Entwicklungsgerät aktivieren möchten, geben Sie das folgende Befehlszeilenargument in Xcode an:

-FIRDebugEnabled

Diese Einstellung gilt, bis Sie den Fehlerbehebungsmodus ausdrücklich deaktivieren, indem Sie das folgende Befehlszeilenargument angeben:

-FIRDebugDisabled

Analytics-Ereignisse mit DebugView debuggen

Nachdem Sie den Debug-Modus auf Ihrem Testgerät aktiviert haben, rufen Sie die Firebase Console auf und wählen Sie im Menü „DebugView“ aus. Spielen Sie dann auf Ihrem Testgerät, um zu sehen, wie Ereignisse protokolliert und im DebugView-Bericht angezeigt werden.

827059255d09ac00.png

Wenn Sie auf den Namen eines Ereignisses klicken, können Sie detaillierte Informationen dazu aufrufen. Der folgende Screenshot zeigt beispielsweise die Parameterdetails, die dem Ereignis level_start zugeordnet sind.

475db00d05d03ab8.png

Weitere Informationen finden Sie in diesem Hilfeartikel.

10. Parameterberichte aktivieren

In Google Analytics für Firebase wird standardmäßig die Gesamtzahl der Ereignisse erfasst. Für benutzerdefinierte Parameter muss die Berichterstellung jedoch explizit für jeden Ereignisparameter aktiviert werden, der Sie interessiert. Nach der Aktivierung werden in Google Analytics für Firebase zusätzliche Karten mit Statistiken für benutzerdefinierte Parameter angezeigt.

So registrieren Sie benutzerdefinierte Parameter für ein Ereignis:

  1. Rufen Sie die Firebase Console auf und wählen Sie das Projekt Awesome Drawing Quiz aus, das Sie zuvor erstellt haben.
  2. Klicken Sie im Navigationsmenü auf Ereignisse.
  1. Klicken Sie in der Zeile des gewünschten Ereignisses auf das Dreipunkt-Menü 73afe611adf58774.png und wählen Sie „Parameterbericht bearbeiten“ aus.

aad40de06ee0c3ad.png

  1. Geben Sie im Feld Parameternamen eingeben die Bezeichnung des Parameters ein, den Sie registrieren möchten.

Hinweis: Wenn keine Übereinstimmung gefunden wird, geben Sie einfach den Parameternamen ein und klicken Sie auf HINZUFÜGEN.e066c761aae4797f.png 5. Sehen Sie in der Tabelle unten nach und legen Sie das Feld Typ entsprechend auf Text oder Zahl fest. Achten Sie bei numerischen Parametern darauf, dass Sie auch das Feld Maßeinheit festlegen. 6. Klicken Sie auf die Schaltfläche SPEICHERN, um die Einrichtung abzuschließen.

Aktivieren Sie die Parameterberichterstellung für jedes der unten aufgeführten Ereignisse.

Ereignisname

Parametername

Parametertyp

Maßeinheit

level_start

level_name

Text

level_wrong_answer

level_name

Text

level_success

level_name

Text

level_success

number_of_attempts

Zahl

Standard

level_success

elapsed_time_sec

Zahl

Sekunden

level_success

hint_used

Zahl

Standard

level_fail

level_name

Text

level_fail

number_of_attempts

Zahl

Standard

level_fail

elapsed_time_sec

Zahl

Sekunden

level_fail

hint_used

Zahl

Standard

game_complete

number_of_correct_answers

Zahl

Standard

Im folgenden Beispiel sehen Sie die Einrichtung von Berichten mit benutzerdefinierten Parametern für das level_success-Ereignis:

6d569c8c27df2914.png

Nachdem Sie die Einrichtung von Parameterberichten abgeschlossen haben, können Sie die Parameter für jedes Ereignis sehen, für das die Parameterberichterstellung aktiviert ist.

d1a37589d54bca6b.png

11. Statistiken im Ereignisbericht

Da Sie einige Ereignisse im Spiel hinzugefügt haben, sollten Sie die Fragen zum Nutzerverhalten im Spiel beantworten können. Hier sind einige Statistiken, die Sie aus dem Firebase-Ereignisbericht erhalten können.

Bei welchem Niveau gibt es die meisten falschen Antworten?

Um diese Frage zu beantworten, müssen Sie herausfinden, wie viele level_wrong_answer-Ereignisse pro Ebene ausgelöst wurden.

Klicken Sie im Ereignisbericht auf level_wrong_answer. Suchen Sie im Ereignisbericht level_wrong_answer nach der Karte level_name. Auf dieser Karte sehen Sie die Werte, die dem Parameter level_name zugeordnet sind.

25da426bbc0c612c.png

Im obigen Screenshot sehen Sie, dass der Horizont die meisten falschen Antworten aufweist. Das bedeutet, dass er im Vergleich zu den anderen Ebenen für Nutzer schwieriger ist.

Anhand dieser Informationen können Sie entscheiden, ob Sie Anfängern schwierige Levels anbieten möchten, um eine hohe Bindungsrate zu erzielen.

Wie viele Versuche wurden durchschnittlich unternommen, um ein Level zu schaffen?

Im Awesome Drawing Quiz können Nutzer die Antwort für jedes Level so oft wie gewünscht einreichen.

Da Sie die Berichterstellung für den Parameter number_of_attempts im Ereignis level_success aktiviert haben, können Sie die detaillierten Messwerte für diesen Parameter sehen.

Klicken Sie im Ereignisbericht auf das level_success-Ereignis. Suchen Sie im Ereignisbericht level_success nach der Karte number_of_attemps. Auf dieser Karte sehen Sie die durchschnittliche Anzahl der Versuche so:

43de290f9f1a0ac9.png

Anhand dieser Informationen können Sie den durchschnittlichen Schwierigkeitsgrad des Spiels optimieren. Wenn die durchschnittliche Anzahl der Versuche beispielsweise zu nahe an 1 liegt, sollten Sie das Spiel vielleicht etwas schwieriger gestalten.

Haben Nutzer versucht, die Frage mithilfe eines Hinweises zu beantworten, obwohl sie das Level nicht geschafft haben?

Wenn ein Nutzer ein Level überspringt, wird ein level_fail-Ereignis ausgelöst. Die Entscheidung des Nutzers kann viele Gründe haben.

Da das Spiel dem Nutzer jedoch nach dem Ansehen einer Videoanzeige mit Prämie einen Hinweis geben kann, ist es wichtig zu wissen, ob der Nutzer zumindest versucht hat, das Level mit dem Hinweis zu schaffen.

Klicken Sie im Ereignisbericht auf das level_fail-Ereignis. Suchen Sie im Ereignisbericht level_fail nach der Karte hint_used. Sie sehen die durchschnittliche Anzahl der hint_used-Ereignisparameter. Wenn ein Hinweis verwendet wird, ist er auf 1 gesetzt. Wenn kein Hinweis verwendet wurde, ist er auf 0 gesetzt.

313814372cd7c8a4.png

Wenn die Zahlen auf der Karte hint_used nahe null liegen, ist das ein Signal dafür, dass die Belohnung (Hinweis) für die Nutzer nicht sehr attraktiv ist. Außerdem verpassen Sie die Gelegenheit, den Umsatz mit Videoanzeigen mit Prämie zu steigern.

Daher sollten Sie die Prämie für die Nutzer attraktiver gestalten, damit sie sich intensiver mit dem Spiel beschäftigen und der Umsatz aus Videoanzeigen mit Prämie gesteigert werden kann.

Wie viele Level wurden im Durchschnitt in jedem Spiel abgeschlossen?

Jedes Spiel im Awesome Drawing Quiz hat insgesamt sechs Level. Sobald der Nutzer sechs Level abgeschlossen hat (unabhängig davon, ob er jedes Level bestanden oder nicht bestanden hat), wird ein game_complete-Ereignis mit number_of_correct_answers als Parameter ausgelöst.

Da number_of_correct_answers angibt, wie viele Levels der Nutzer abgeschlossen hat (vorausgesetzt, er hat eine richtige Antwort gegeben), können Sie die Antwort anhand der Messwerte des Parameters number_of_correct_answers ermitteln.

Klicken Sie im Ereignisbericht auf das game_complete-Ereignis. Suchen Sie im Bericht zum Ereignis „game_complete“ nach der Karte number_of_correct_answers. Sie sehen die durchschnittliche Anzahl der number_of_correct_answers-Ereignisparameter.

d9eeaa019d1bceb4.png

Wenn die durchschnittliche Anzahl der abgeschlossenen Level zu niedrig ist, sollten Sie das Spiel so umgestalten, dass die Spieler ein Level schaffen können, damit sie das Interesse am Spiel nicht verlieren.

12. Fertig!

Sie haben das AdMob+Firebase 101-Codelab für Unity abgeschlossen. Den vollständigen Code für dieses Codelab finden Sie im Ordner android_studio_folder.png101-complete_and_102-base.

Im nächsten Teil des AdMob+Firebase-Codelabs erfahren Sie, wie Sie einen Trichter verwenden, um den App-Ereignisfluss zu visualisieren. Außerdem wird beschrieben, wie Sie mit Remote Config und A/B-Tests den Parameterwert im Spiel ohne App-Update optimieren können.