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?
Wie würden Sie Ihre Erfahrung mit Firebase bewerten?
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:
101-base: Der Startcode, auf dem Sie in diesem Codelab aufbauen.
101-complete_and_102-base: Der vollständige Code für dieses Codelab und der Starter für das Codelab 102.
102-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:
- Rufen Sie die AdMob Console auf.
- Klicken Sie im Menü Apps auf App hinzufügen.
- Wenn Sie gefragt werden, ob Sie Ihre App bei Google Play oder im App Store veröffentlicht haben, antworten Sie mit NEIN.
- 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.
- Klicken Sie im AdMob-Frontend auf das Menü Apps und wählen Sie dann Awesome Drawing Quiz aus der App-Liste aus.
- 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.
- Wählen Sie als Anzeigenformat Mit Prämie aus.

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

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

- 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:
- Rufen Sie die AdMob Console auf.
- Klicken Sie im Menü Apps auf App hinzufügen.
- Wenn Sie gefragt werden, ob Sie Ihre App bei Google Play oder im App Store veröffentlicht haben, antworten Sie mit NEIN.
- 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.
- Klicken Sie im AdMob-Frontend auf das Menü Apps und wählen Sie dann Awesome Drawing Quiz aus der App-Liste aus.
- 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.
- Wählen Sie als Anzeigenformat Mit Prämie aus.

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

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

- 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.
- 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.
- Im Unity-Projekt Awesome Drawing Quiz. Rufen Sie im Projekt Assets > Import Package > Custom Package auf.
- 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.

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

5. Firebase-Projekt einrichten
Neues Projekt in der Firebase Console erstellen
- Rufen Sie die Firebase Console auf.
- Wählen Sie Projekt hinzufügen aus und geben Sie dem Projekt den Namen „Awesome Drawing Quiz“.
Unity-App hinzufügen
- Klicken Sie auf der Übersichtsseite Ihres neuen Projekts auf Firebase zu Ihrer Unity-App hinzufügen.
- Klicken Sie das Kästchen „Als iOS-App registrieren“ an.
- Geben Sie die iOS-Bundle-ID so ein: com.codelab.awesomedrawingquiz.unity
- Geben Sie einen App-Alias an, z. B. Awesome Drawing Quiz (Unity on iOS).
- Klicken Sie das Kästchen „Als Android-App registrieren“ an.
- Geben Sie den Android-Paketnamen so ein: com.codelab.awesomedrawingquiz.unity
- Geben Sie einen App-Alias an, z. B. Awesome Drawing Quiz (Unity on Android).
- 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
Assets im Unity-Projekt.

Firebase Analytics SDK hinzufügen
- Laden Sie das Firebase Unity SDK 5.5.0 herunter und entpacken Sie es an einem für Sie günstigen Ort.
- Öffnen Sie das Unity-Projekt Awesome Drawing Quiz und rufen Sie Assets > Import Package > Custom Package auf.
- Importieren Sie das Remote Config SDK (
dotnet4/FirebaseAnalytics.unitypackage) aus dem entpackten SDK. - 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:
- Melden Sie sich unter https://apps.admob.com in Ihrem AdMob-Konto an.
- Klicken Sie in der Seitenleiste auf „Apps“.
- 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.
- Klicken Sie in der Seitenleiste auf „App-Einstellungen“.
- Klicken Sie auf „Mit Firebase verknüpfen“.
- 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.
- 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

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

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.

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.

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

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

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.

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.

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.

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.

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.

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:
- Rufen Sie die Firebase Console auf und wählen Sie das Projekt Awesome Drawing Quiz aus, das Sie zuvor erstellt haben.
- Klicken Sie im Navigationsmenü auf Ereignisse.
- Klicken Sie in der Zeile des gewünschten Ereignisses auf das Dreipunkt-Menü
und wählen Sie „Parameterbericht bearbeiten“ aus.

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

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.

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.

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:

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.

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.

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