1. Einführung
Werbung ist ein wesentlicher Bestandteil der Gesamtnutzung Ihrer App. Mit einer guten Anzeigenimplementierung können Sie die Nutzerfreundlichkeit Ihrer App insgesamt verbessern und sogar die Nutzerbindung und das Nutzerinteresse steigern. Wenn Sie beispielsweise Anzeigen mit Prämie verwenden, können Sie Nutzern, die sich Videoanzeigen ansehen, mit In-App-Währung oder In-App-Artikeln belohnen. So können Nutzer neue Dimensionen erreichen, wenn sie andernfalls nicht weiterkommen oder abgewandert wären.
Es ist jedoch nicht einfach, nutzerfreundliche Werbeanzeigen zu gestalten. Sie werden sich zum Beispiel fragen, wie oft diese Anzeigen ausgeliefert werden sollten. Wo und wann sollten sie präsentiert werden? Wie soll der Preis lauten? Leider unterscheidet sich die Antwort von App zu App und von Placement zu Placement. Es gibt keine Universallösung.
Mit Google Analytics für Firebase, AdMob und weiteren leistungsstarken und dennoch benutzerfreundlichen Firebase-Tools ist die datengesteuerte Feinabstimmung Ihrer App viel einfacher und effizienter. Heute zeigen wir Ihnen, wie Sie loslegen können.
Inhalt
Dieses Codelab ist das erste von drei Codelabs, in dem Sie die App Awesome Drawing Quiz entwickeln – ein Spiel, bei dem Spieler den Namen der Zeichnung erraten können. Es wird gezeigt, wie Sie Anzeigen mit Prämie und Firebase-Dienste in Ihr Spiel einbinden können.
In diesem Codelab binden Sie Google Analytics for Firebase ein, um wichtige App-Ereignisse aufzuzeichnen. Außerdem erfahren Sie, wie Sie die in der Firebase Console angezeigten App-Analysen auswerten.
Aufgaben in diesem Lab
- Google Analytics for Firebase in Ihrer App einrichten
- App-Ereignisse aufzeichnen
- App-Analysen in der Firebase Console auswerten
Voraussetzungen
- Unity 2018.4.4f1 oder höher
- Xcode 10 oder höher (um das Ziel für iOS zu erstellen)
- Ein Google-Konto
- Ein Testgerät mit Android 5.0 oder höher und ein USB-Kabel zum Verbinden des Geräts oder einen Android-Emulator mit AVD(Android Virtual Device) mit einem System-Image, das den Play Store und Google APIs unterstützt
- Ein iOS-Gerät oder einen Simulator mit iOS 8.0 oder höher
Wie würden Sie Ihre Erfahrung mit AdMob bewerten?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrung mit Firebase bewerten?
<ph type="x-smartling-placeholder">2. Entwicklungsumgebung einrichten
Code herunterladen
Klicke 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 Sie klonen das GitHub-Repository über die Befehlszeile.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Das Repository enthält die folgenden vier Ordner:
- 101-base: Startcode, den Sie in diesem Codelab erstellen.
- 101-complete_and_102-base – Abgeschlossener Code für dieses Codelab und für das Codelab 102.
- 102-complete – Vollständiger 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.
Starter-App importieren
Starten Sie Unity und wählen Sie im Begrüßungsbildschirm Open (Öffnen) aus. Wählen Sie dann aus dem heruntergeladenen Code das Verzeichnis 101-base aus.
Das Projekt sollte jetzt in Unity geöffnet sein.
3. Videoanzeigenblock mit Prämie einrichten (optional)
Die Einstiegs-App enthält bereits einen eigenen Videoanzeigenblock mit Prämie. Wenn Sie keinen neuen Schritt in Ihrem AdMob-Konto erstellen möchten, können Sie diesen Schritt überspringen.
Einrichtung für Android
So erstellen Sie eine neue AdMob-App in Ihrem Konto:
- Rufen Sie die AdMob-Konsole 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."
- Nennen Sie die App "Awesome Drawing Quiz" Wählen Sie Android als Plattform aus und klicken Sie auf Add (Hinzufügen).
Nachdem Sie eine AdMob-App in Ihrem Konto erstellt haben, gehen Sie wie unten beschrieben vor, um einen neuen Anzeigenblock für Videoanzeigen mit Prämie zu erstellen.
- Klicken Sie im AdMob-Front-End auf das Menü Apps und wählen Sie aus der App-Liste "Awesome Drawing Quiz" 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 des Anzeigenblocks an. Setzen Sie dann den Prämienbetrag auf 1 und den Prämienartikel auf „hint“ (das sind die Belohnung, die die App Nutzern im Moment vergibt). Klicken Sie anschließend auf ANZEIGENBLOCK ERSTELLEN, um einen neuen Anzeigenblock für Videoanzeigen mit Prämie zu erstellen.
- Wenn die Erstellung erfolgreich war, wird eine Anleitung wie die folgende angezeigt.
- Kehren Sie zum Unity-Projekt zurück und aktualisieren Sie die AdMob-Konstanten für die App-ID und die Anzeigenblock-ID in die Konstanten, 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-Konsole 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."
- Nennen Sie die App "Awesome Drawing Quiz" Wählen Sie iOS als Plattform aus und klicken Sie auf Add (Hinzufügen).
Nachdem Sie eine AdMob-App in Ihrem Konto erstellt haben, gehen Sie wie unten beschrieben vor, um einen neuen Anzeigenblock für Videoanzeigen mit Prämie zu erstellen.
- Klicken Sie im AdMob-Front-End auf das Menü Apps und wählen Sie aus der App-Liste "Awesome Drawing Quiz" 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 des Anzeigenblocks an. Setzen Sie dann den Prämienbetrag auf 1 und den Prämienartikel auf „hint“ (das sind die Belohnung, die die App Nutzern im Moment vergibt). Klicken Sie anschließend auf ANZEIGENBLOCK ERSTELLEN, um einen neuen Anzeigenblock für Videoanzeigen mit Prämie zu erstellen.
- Wenn die Erstellung erfolgreich war, wird eine Anleitung wie die folgende angezeigt.
- Kehren Sie zum Unity-Projekt zurück und aktualisieren Sie die AdMob-Konstanten für die App-ID und die Anzeigenblock-ID in die Konstanten, 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
Um AdMob-Anzeigen in der Unity App zu schalten, müssen Sie das Google Mobile Ads Unity-Plug-in zum Projekt hinzufügen.
- Laden Sie das Paket Google Mobile Ads Unity Plugin 3.18.1 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 > Paket importieren > Benutzerdefiniertes Paket.
- Importieren Sie das Paket GoogleMobileAds.unitypackage in das heruntergeladene Projekt.
AdMob-App-ID konfigurieren
Wählen Sie im Unity-Editor Assets > Google Mobile Anzeigen > Einstellungen aus.
Aktivieren Sie AdMob, indem Sie unter Google AdMob das Kästchen Aktiviert anklicken. Geben Sie dann die AdMob-App-ID wie folgt ein:
- Android:
ca-app-pub-3940256099942544~3048611032
- iOS:
ca-app-pub-3940256099942544~2753522596
5. Firebase-Projekt einrichten
Neues Projekt über die Firebase Console erstellen
- Rufen Sie die Firebase Console auf.
- Wählen Sie Projekt hinzufügen aus und nennen Sie Ihr Projekt "Awesome Drawing Quiz".
Unity App hinzufügen
- Klicken Sie auf dem Übersichtsbildschirm des neuen Projekts auf Firebase zu meiner 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 ein: 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 ein: 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 Dateien google-service.json und GoogleService-Info.plist herunter und verschieben Sie dann beide in den Ordner Assets des Unity-Projekts.
Firebase Analytics SDK hinzufügen
- Laden Sie das Firebase Unity SDK 5.5.0 herunter und entpacken Sie es an einem für Sie geeigneten Speicherort.
- Öffnen Sie das Unity-Projekt Awesome Drawing Quiz und gehen Sie zu Assets > Paket importieren > Benutzerdefiniertes Paket.
- Importieren Sie aus dem entpackten SDK das Remote Config SDK (
dotnet4/FirebaseAnalytics.unitypackage
). - Klicken Sie im Fenster „Import Unity Package“ (Unity-Paket importieren) auf Import (Importieren).
6. AdMob mit Firebase-Projekt verknüpfen
Führen Sie die folgenden Schritte aus, um Ihre Apps mit Firebase zu verknüpfen.
- Melden Sie sich unter https://apps.admob.com in Ihrem AdMob-Konto an.
- Klicken Sie in der Seitenleiste auf Apps.
- Wählen Sie Tolles Zeichnen-Quiz aus. Falls die App nicht in der Liste der zuletzt verwendeten Apps aufgeführt wird, 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 bestehendem Firebase-Projekt verknüpfen und neue Firebase-App erstellen aus. Wählen Sie dann im Drop-down-Menü das Projekt Awesome Drawing Quiz aus.
- Nachdem Sie auf WEITER geklickt haben, erscheint die Meldung Erfolgreich verknüpft. Klicke auf FERTIG, um den Vorgang abzuschließen.
Sobald Sie Ihre AdMob-App mit dem Firebase-Projekt verknüpft haben, stehen Ihnen in AdMob und in der Firebase Console einige zusätzliche Funktionen zur Verfügung:
Umsatzkarte (AdMob)
Auf der Infokarte „Umsatz“ findest du eine Übersicht über alle möglichen Einnahmequellen. Folgende Umsatzquellen werden unterstützt:
- AdMob (geschätzt)
- Vermittelte Werbenetzwerke (beobachtet)
- In-App-Käufe
- E-Commerce-Käufe
Karte „Nutzermesswerte“ (AdMob)
Auf der Karte „Nutzermesswerte“ sehen Sie, wie sich Änderungen an der Nutzerfreundlichkeit von Werbeanzeigen auf das Nutzerverhalten auswirken könnten.
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, werden auf der Karte „Gesamtumsatz“ im Firebase-Dashboard der AdMob-Umsatz sowie In-App- und E-Commerce-Käufe angezeigt.
Berichte zu Anzeigenereignissen (Firebase)
Anzeigenspezifische Ereignisse (Klick-, Impressions- und Prämienereignisse) werden automatisch erfasst und stehen in Google Analytics for Firebase zur Verfügung.
7. Projekt ausführen
Nachdem Sie das Projekt kompiliert und ausgeführt haben, wird beim Start der App der folgende Bildschirm angezeigt.
Sobald du auf SPIEL STARTEN klickst, siehst du eine Zeichnung auf dem Bildschirm. Ihre Mission ist es, den Namen der Zeichnung anhand des Hinweises oben zu erraten, aus dem Sie den ersten Buchstaben und die Länge des Zeichnungsnamens ableiten können.
Wenn Sie den Namen der Zeichnung nicht kennen, können Sie die Ebene überspringen, indem Sie auf die Schaltfläche ÜBERSPRINGEN klicken.
Möglicherweise brauchen Sie einen zusätzlichen Anhaltspunkt, der Ihnen hilft, die Antwort zu erraten. Wenn Sie auf die Schaltfläche ANTWORT klicken und sich eine Videoanzeige mit Prämie ansehen, erhalten Sie einen zusätzlichen Hinweis. Nachdem du dir die Anzeige vollständig angesehen hast, wird in der App ein zusätzlicher Buchstabe als Prämie ausgewiesen.
8. App-Ereignisse hinzufügen
Um die User Journey im Awesome Drawing Quiz besser zu verstehen, definieren Sie einige benutzerdefinierte Ereignisse, mit denen das Verhalten der Nutzer 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, also ein neues Zeichenquiz, innerhalb einer Phase. (es gibt sechs Ebenen in einer Phase) | level_name |
level_wrong_answer | Ein Nutzer gibt eine falsche Antwort ein. | level_name |
ad_reward_prompt | Ein Nutzer tippt auf die Hinweisschaltfläche und wird aufgefordert, sich eine Videoanzeige mit Prämie anzusehen. | ad_unit_id |
ad_reward_impression | Ein Nutzer beginnt, eine Videoanzeige mit Prämie anzusehen. | ad_unit_id |
level_success | Ein Nutzer gibt eine richtige Antwort ein, d. h., er löscht ein Level. | Levelname, Anzahl der Versuche, verstrichene Zeit in Sek., Hinweis verwendet |
level_fail | Ein Nutzer überspringt ein Level. | Levelname, Anzahl der Versuche, verstrichene Zeit in Sek., Hinweis verwendet |
game_complete | wenn das Spiel vorbei ist | number_of_correct_answers |
Die einzelnen Parameter, die den einzelnen Ereignissen zugeordnet sind, werden folgendermaßen beschrieben:
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 | Anzeigenblock-ID zum Ausliefern einer Videoanzeige mit Prämie |
ad_reward_impression | ad_unit_id | Anzeigenblock-ID zum Ausliefern einer Videoanzeige mit Prämie |
level_success | level_name | Name der Zeichnung, die im Level angezeigt wird (z.B. "Banane") |
level_success | number_of_attempts | Anzahl der Versuche, eine Stufe zu löschen |
level_success | elapsed_time_sec | Verstrichene Zeit zum Löschen eines Levels in Sekunden |
level_success | hint_used | Gibt an, ob der Nutzer einen Hinweis verwendet hat (z. B. eine Videoanzeige mit Prämie angesehen hat) oder nicht, um ein Level zu beenden (1: Hinweis verwendet / 0: ein Level ohne Hinweis gelöscht) |
level_fail | level_name | Name der Zeichnung, die im Level angezeigt wird (z.B. "Banane") |
level_fail | number_of_attempts | Anzahl der Versuche, eine Stufe zu löschen |
level_fail | elapsed_time_sec | Verstrichene Zeit zum Löschen eines Levels in Sekunden |
level_fail | hint_used | Gibt an, ob der Nutzer einen Hinweis verwendet hat (z. B. eine Videoanzeige mit Prämie angesehen hat) oder nicht, um ein Level zu beenden (1: Hinweis verwendet / 0: ein Level ohne Hinweis gelöscht) |
game_complete | number_of_correct_answers | Anzahl der im Spiel geklärten Level |
Hilfsklasse zum Logging von benutzerdefinierten Ereignissen erstellen
Um das Analyseereignis auf einfache Weise zu protokollieren, erstellen Sie eine Hilfsklasse zum Verwalten benutzerdefinierter Ereignisse.
Erstellen Sie zuerst einen neuen Ordner im Ordner Assets/Scripts
und nennen Sie ihn Analytics
. Erstellen Sie dann ein neues C#-Script und nennen Sie es im Ordner Analytics
QuizAnalytics.cs
.
Fügen Sie den folgenden Code in die Datei QuizAnalytics.cs
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);
}
}
}
Analyseereignisse im Spiel protokollieren
Öffnen Sie die Datei „Game.cs
“ im Ordner „Assets/Scripts/Scenes
“. Um die Klasse QuizAnalytics
zu verwenden, die sich im Namespace AwesomeDrawingQuiz.Analytics
befindet, fügen Sie die Anweisung using folgendermaßen hinzu.
Szenen/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. Rufe außerdem QuizAnalytics.LogGameStart()
auf, um anzugeben, dass ein Spiel begonnen hat.
Szenen/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:
Szenen/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 abschließend die Datei Main.cs im Ordner Assets/Scripts/Scenes
. Prüfen Sie, ob Firebase bereit ist, bevor Sie Methoden im Firebase SDK aufrufen.
Szenen/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. Fehler in Analyseereignissen beheben
Mit DebugView können Sie prüfen, ob Ereignisse korrekt protokolliert werden. Mit DebugView können Sie die von Ihrer App protokollierten Rohereignisdaten auf Entwicklungsgeräten nahezu in Echtzeit sehen.
Dies ist für die Validierung während der Instrumentierungsphase der Entwicklung sehr hilfreich und kann Ihnen helfen, Fehler in Ihrer Analyseimplementierung zu erkennen.
Debug-Modus auf Android-Geräten aktivieren
In der Regel werden die in Ihrer App protokollierten Ereignisse über einen Zeitraum von etwa einer Stunde zusammengefasst und gemeinsam hochgeladen. Wenn Sie Ihre Analyseimplementierung im laufenden Betrieb validieren möchten, müssen Sie auf Ihrem Entwicklungsgerät den Fehlerbehebungsmodus aktivieren, damit Ereignisse mit minimalen Verzögerungen hochgeladen werden.
Öffnen Sie zuerst das Terminal-Tool 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
Dieses Verhalten bleibt bestehen, bis Sie den Fehlerbehebungsmodus explizit deaktivieren, indem Sie den folgenden Befehl ausführen:
adb shell setprop debug.firebase.analytics.app .none.
Fehlerbehebungsmodus unter iOS aktivieren
Um den Fehlerbehebungsmodus für Analytics auf Ihrem Entwicklungsgerät zu aktivieren, 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
Fehler in Analytics-Ereignissen mit DebugView beheben
Nachdem Sie den Fehlerbehebungsmodus auf Ihrem Testgerät aktiviert haben, rufen Sie die Firebase Console auf und wählen Sie im Menü die Option „DebugView“ aus. Spielen Sie dann auf Ihrem Testgerät das Spiel, um zu sehen, welche Ereignisse protokolliert und im DebugView-Bericht angezeigt werden.
Sie können auf detaillierte Informationen zu jedem Ereignis zugreifen, indem Sie auf den Ereignisnamen klicken. Der folgende Screenshot zeigt beispielsweise Parameterdetails, die mit dem Ereignis level_start
verknüpft sind.
Weitere Informationen finden Sie in diesem Hilfeartikel.
10. Parameterberichte aktivieren
In Google Analytics for Firebase wird standardmäßig die Gesamtzahl der Ereignisse erfasst. Berichte für benutzerdefinierte Parameter müssen jedoch für jeden Ereignisparameter, für den Sie sich interessieren, explizit aktiviert werden. Anschließend werden in Google Analytics für Firebase zusätzliche Karten mit den 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 mit dem Ereignis, das Sie ändern möchten, auf . Parameterbericht bearbeiten.
- 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 dann auf HINZUFÜGEN. 5. Sehen Sie sich die Tabelle unten an und setzen Sie das Feld Typ entsprechend auf Text oder Zahl. Für numerische Parameter muss auch das Feld Maßeinheit festgelegt sein. 6. Klicke auf SPEICHERN, um die Einrichtung abzuschließen.
Parameterberichte für alle unten aufgeführten Ereignisse aktivieren
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, wie Berichte mit benutzerdefinierten Parametern für das Ereignis level_success
eingerichtet werden:
Sobald Sie die Parameterberichte eingerichtet haben, können Sie die Parameter sehen, die mit jedem Ereignis verknüpft sind, für das Parameterberichte aktiviert sind.
11. Informationen aus dem Ereignisbericht abrufen
Da Sie einige Ereignisse zu dem Spiel hinzugefügt haben, sollten Sie die Fragen zum Nutzerverhalten im Spiel beantworten können. Im Folgenden finden Sie einige Informationen, die der Firebase-Ereignisbericht liefert.
Welche Stufe hat die meisten falschen Antworten?
Um diese Frage zu beantworten, solltest du herausfinden, wie viele level_wrong_answer
-Ereignisse pro Level ausgelöst wurden.
Klicken Sie im Ereignisbericht auf level_wrong_answer
. Suchen Sie im level_wrong_answer
-Ereignisbericht nach der Karte level_name
. Hier werden die Werte angezeigt, die mit dem Parameter level_name
auf dieser Karte verknüpft sind.
Im obigen Screenshot können Sie ganz einfach feststellen, dass der Horizont die meisten falschen Antworten hat. Das bedeutet, dass er für Nutzer im Vergleich zu den anderen Ebenen schwierig ist.
Anhand der hier gewonnenen Erkenntnisse können Sie entscheiden, dass Sie Anfängern keine schwierigen Levels zur Verfügung stellen, um eine hohe Bindungsrate beizubehalten.
Wie viele Versuche wurden durchschnittlich unternommen, um ein Level zu erreichen?
Im Awesome Drawing Quiz können Nutzer für jedes Level beliebig oft eine Antwort einreichen.
Da Sie die Parameterberichte für den Parameter number_of_attempts
im Ereignis level_success
aktiviert haben, können Sie die detaillierten Messwerte für diesen Parameter aufrufen.
Klicken Sie im Ereignisbericht auf das Ereignis level_success
. Suchen Sie im level_success
-Ereignisbericht nach der Karte number_of_attemps
. Die durchschnittliche Anzahl der Versuche für diese Karte wird so angezeigt:
Anhand dieser Informationen kannst du den Schwierigkeitsgrad des Spiels im Durchschnitt optimieren. Wenn beispielsweise die durchschnittliche Anzahl der Versuche zu nah bei einem Versuch liegt, könnten Sie das Spiel etwas anspruchsvoller gestalten.
Haben die Nutzer versucht, die Frage mit einem Hinweis zu lösen, obwohl sie ein Level endlich nicht erreicht haben?
Wenn ein Nutzer beschließt, ein Level zu überspringen, wird ein level_fail
-Ereignis ausgelöst. Für die Entscheidung eines Nutzers kann es viele Gründe geben.
Da der Nutzer jedoch im Spiel einen Hinweis erhalten kann, nachdem er sich eine Videoanzeige mit Prämie angesehen hat, ist es wichtig zu wissen, ob er versucht hat, das Level mit dem Hinweis zu erreichen.
Klicken Sie im Ereignisbericht auf das Ereignis level_fail
. Suchen Sie im level_fail
-Ereignisbericht nach der Karte hint_used
. Sie sehen die durchschnittliche Anzahl der hint_used
Ereignisparameter. Wenn ein Hinweis verwendet wird, wird er auf 1 gesetzt, während er auf 0 gesetzt ist, wenn kein Hinweis verwendet wurde.
Wenn die Zahl auf der hint_used
-Karte nahe bei 0 liegt, bedeutet das, dass die Prämie (ein Hinweis) für die Nutzer nicht attraktiv ist. Außerdem verlieren Sie die Möglichkeit, den Umsatz aus Videoanzeigen mit Prämie zu steigern.
Daher sollten Sie die Belohnung so gestalten, dass sie für die Nutzer hilfreicher ist, sodass sie eine stärkere Interaktion mit dem Spiel erleben und der Umsatz aus Videoanzeigen mit Prämie gesteigert werden kann.
Wie viele Level wurden durchschnittlich in jedem Spiel geklärt?
Es gibt insgesamt sechs Levels pro Spiel im tollen Zeichenquiz. Sobald der Nutzer sechs Level abgeschlossen hat (unabhängig davon, ob er jede Stufe gelöscht 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 Level der Nutzer gelöscht hat (und eine richtige Antwort gegeben hat), kannst du dir die Messwerte des Parameters number_of_correct_answers
ansehen.
Klicken Sie im Ereignisbericht auf game_complete
. Suchen Sie im Ereignisbericht „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 gelöschten Level zu niedrig ist, sollten Sie das Spiel so neu anordnen, dass Nutzer ein Level leichter erreichen können, damit sie Ihr Spiel weiterspielen können, ohne das Interesse zu verlieren.
12. Fertig
Sie haben das Unity-Codelab zu AdMob + Firebase 101 abgeschlossen. Du findest den fertigen Code für dieses Codelab im Ordner 101-complete_and_102-base.
Im nächsten Teil des Codelab für AdMob und Firebase lernen Sie, wie Sie den App-Ereignisfluss mithilfe eines Trichters visualisieren. Außerdem erfahren Sie, wie Sie mithilfe von Remote Config und A/B-Tests den Parameterwert im Spiel ohne App-Update optimieren.