1. Wprowadzenie
Reklamy są kluczowym elementem ogólnej wygody użytkowników aplikacji. Dobre wdrożenia reklam mogą poprawić ogólne wrażenia użytkowników z aplikacji, a nawet zwiększyć ich zaangażowanie i utrzymanie użytkowników. Na przykład reklamy z nagrodą umożliwiają nagradzanie użytkowników walutą lub elementami dodawanymi w aplikacji w zamian za oglądanie reklam wideo. Dzięki temu użytkownicy mogą osiągać nowe poziomy, na których w innych okolicznościach mogliby utknąć i zrezygnować z aplikacji.
Zapewnienie doskonałych wrażeń związanych z reklamami nie jest jednak łatwe. Możesz mieć pytania takie jak: jak często wyświetlać te reklamy? Gdzie i kiedy należy je wyświetlać? Jaka powinna być nagroda? Niestety odpowiedź różni się w zależności od aplikacji i miejsca docelowego. Nie ma jednej uniwersalnej odpowiedzi.
Dzięki Google Analytics dla Firebase, AdMob i kilku innym zaawansowanym, ale łatwym w obsłudze narzędziom, które oferuje Firebase, precyzyjne dostosowywanie aplikacji na podstawie danych stało się znacznie prostsze i bardziej efektywne. Dziś pokażemy Ci, jak zacząć.
Co utworzysz
Te ćwiczenia z programowania są pierwszymi z trzech, które pomogą Ci stworzyć aplikację Awesome Drawing Quiz, czyli grę, w której gracze zgadują nazwę rysunku. Pokazuje, jak w grze można wykorzystać reklamy z nagrodą i usługi Firebase.
W tym laboratorium kodowania zintegrujesz Google Analytics dla Firebase, aby rejestrować ważne zdarzenia w aplikacji. Dowiesz się też, jak odczytywać dane analityczne aplikacji wyświetlane w konsoli Firebase.
|
|
Czego się nauczysz
- Jak skonfigurować Google Analytics dla Firebase w aplikacji
- Jak rejestrować zdarzenia w aplikacji
- Jak odczytywać dane analityczne aplikacji wyświetlane w konsoli Firebase
Czego potrzebujesz
- Unity w wersji 2018.4.4f1 lub nowszej
- Xcode 10 lub nowsza wersja (do tworzenia wersji docelowej na iOS)
- konto Google,
- Urządzenie testowe z Androidem w wersji 5.0 lub nowszej i kabel USB do podłączenia urządzenia albo Android Emulator z urządzeniem wirtualnym z Androidem(AVD) z obrazem systemu, który obsługuje Sklep Play lub interfejsy API Google.
- urządzenie z iOS lub symulator z iOS 8.0 lub nowszym,
Jak oceniasz swoje doświadczenie z AdMob?
Jak oceniasz swoje doświadczenie z Firebase?
2. Konfigurowanie środowiska programistycznego
Pobieranie kodu
Aby pobrać cały kod do tych ćwiczeń, kliknij ten przycisk:
Rozpakuj pobrany plik ZIP. Spowoduje to rozpakowanie folderu głównego o nazwie admob-firebase-codelabs-unity-master.
…lub sklonuj repozytorium GitHub z poziomu wiersza poleceń.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Repozytorium zawiera 4 foldery:
101-base – kod początkowy, który będziesz rozwijać w tych ćwiczeniach z programowania.
101-complete_and_102-base – ukończony kod do tych ćwiczeń z programowania i kod początkowy do ćwiczeń z programowania 102.
102-complete – ukończony kod do ćwiczeń z programowania 102.
Przygotuj wymagane pliki
Awesome Drawing Quiz korzysta z kilku kodów open source, które są wymagane do skompilowania i uruchomienia projektu.
Otwórz terminal i przejdź do głównego katalogu repozytorium. Następnie uruchom ./gradlew :prepareThirdPartyFiles (gradlew.bat :prepareThirdPartyFiles w systemie Windows) w terminalu, aby skopiować wymagane pliki do projektu.
Importowanie aplikacji startowej
Uruchom Unity i na ekranie powitalnym kliknij „Otwórz”. Następnie wybierz katalog 101-base z pobranego kodu.
Projekt powinien być teraz otwarty w Unity.
3. Konfigurowanie jednostki reklamy wideo z nagrodą (opcjonalnie)
Aplikacja startowa zawiera już specjalną jednostkę reklamy wideo z nagrodą. Jeśli nie chcesz tworzyć nowego konta podrzędnego na koncie AdMob, możesz pominąć ten krok.
Konfiguracja na Androidzie
Aby utworzyć nową aplikację w AdMob na swoim koncie, wykonaj te czynności:
- Otwórz konsolę AdMob.
- W menu Aplikacje kliknij Dodaj aplikację.
- Na pytanie „Czy aplikacja została opublikowana w Google Play lub App Store?” odpowiedz „NIE”.
- Nazwij aplikację „Awesome Drawing Quiz”,jako platformę wybierz „Android”, a potem kliknij „Dodaj”.
Po utworzeniu aplikacji w AdMob na koncie wykonaj czynności opisane poniżej, aby utworzyć nową jednostkę reklamy wideo z nagrodą.
- W interfejsie AdMob kliknij menu Aplikacje, a potem na liście aplikacji wybierz „Awesome Drawing Quiz”.
- Kliknij kolejno menu Jednostki reklamowe i DODAJ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklamy wideo z nagrodą.
- Wybierz Reklama z nagrodą jako format reklamy.

- Podaj dowolną nazwę jednostki reklamowej. Następnie ustaw liczbę nagród na 1, a nagrodę na „podpowiedź” (jest to nagroda, którą aplikacja obecnie przyznaje użytkownikom). Następnie kliknij UTWÓRZ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklamową wideo z nagrodą.

- Po utworzeniu zobaczysz instrukcje podobne do tych poniżej.

- Wróć do projektu Unity i zmień stałe identyfikatora aplikacji w AdMob i identyfikatora jednostki reklamowej na te, które zostały utworzone w poprzednim kroku.
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>";
...
}
}
Konfiguracja na iOS
Aby utworzyć nową aplikację w AdMob na swoim koncie, wykonaj te czynności:
- Otwórz konsolę AdMob.
- W menu Aplikacje kliknij Dodaj aplikację.
- Na pytanie „Czy aplikacja została opublikowana w Google Play lub App Store?” odpowiedz „NIE”.
- Nazwij aplikację „Awesome Drawing Quiz”,jako platformę wybierz „iOS”, a potem kliknij „Dodaj”.
Po utworzeniu aplikacji w AdMob na koncie wykonaj czynności opisane poniżej, aby utworzyć nową jednostkę reklamy wideo z nagrodą.
- W interfejsie AdMob kliknij menu Aplikacje, a potem na liście aplikacji wybierz „Awesome Drawing Quiz”.
- Kliknij kolejno menu Jednostki reklamowe i DODAJ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklamy wideo z nagrodą.
- Wybierz Reklama z nagrodą jako format reklamy.

- Podaj dowolną nazwę jednostki reklamowej. Następnie ustaw liczbę nagród na 1, a nagrodę na „podpowiedź” (jest to nagroda, którą aplikacja obecnie przyznaje użytkownikom). Następnie kliknij UTWÓRZ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklamową wideo z nagrodą.

- Po utworzeniu zobaczysz instrukcje podobne do tych poniżej.

- Wróć do projektu Unity i zmień stałe identyfikatora aplikacji w AdMob i identyfikatora jednostki reklamowej na te, które zostały utworzone w poprzednim kroku.
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. Dodawanie wtyczki reklam mobilnych Google dla środowiska Unity
Importowanie wtyczki
Aby wyświetlać reklamy AdMob w aplikacji Unity, musisz dodać do projektu wtyczkę reklam mobilnych Google dla środowiska Unity.
- Pobierz pakiet wtyczki reklam mobilnych Google dla środowiska Unity w wersji 3.18.1. (Pamiętaj, że ten Codelab może nie być zgodny z inną wersją wtyczki).
- W projekcie Unity Awesome Drawing Quiz. W projekcie kliknij Assets > Import Package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet).
- Zaimportuj plik GoogleMobileAds.unitypackage do pobranego projektu.
Konfigurowanie identyfikatora aplikacji w AdMob
W edytorze Unity w menu kliknij Assets > Google Mobile Ads > Settings (Zasoby > Reklamy mobilne Google > Ustawienia).

Aby włączyć AdMob, w sekcji Google AdMob kliknij pole wyboru Włączono. Następnie wpisz identyfikator aplikacji w AdMob w ten sposób:
- System Android:
ca-app-pub-3940256099942544~3048611032 - System iOS:
ca-app-pub-3940256099942544~2753522596

5. Konfigurowanie projektu Firebase
Tworzenie nowego projektu w konsoli Firebase
- Otwórz konsolę Firebase.
- Kliknij Dodaj projekt i nadaj mu nazwę „Super quiz rysunkowy”.
Dodawanie aplikacji w Unity
- Na ekranie przeglądu nowego projektu kliknij Add Firebase to your Unity app (Dodaj Firebase do aplikacji w Unity).
- Zaznacz pole wyboru Zarejestruj jako aplikację na iOS.
- Wpisz identyfikator pakietu na iOS w formacie com.codelab.awesomedrawingquiz.unity.
- Podaj pseudonim aplikacji w formacie: Awesome Drawing Quiz (Unity on iOS)
- Zaznacz pole wyboru Zarejestruj jako aplikację na Androida.
- Wpisz nazwę pakietu na Androida w formacie: com.codelab.awesomedrawingquiz.unity
- Podaj pseudonim aplikacji w formacie: Awesome Drawing Quiz (Unity na Androidzie)
- Aby zarejestrować aplikacje na Androida i iOS, kliknij Zarejestruj aplikację.
Dodawanie plików konfiguracyjnych Firebase do projektu w Unity
Następnie pojawi się ekran, na którym możesz pobrać plik konfiguracji zawierający wszystkie niezbędne metadane Firebase dla Twojej aplikacji. Pobierz pliki google-service.json i GoogleService-Info.plist, a następnie przenieś je do folderu
Assets w projekcie Unity.

Dodawanie pakietu SDK Firebase Analytics
- Pobierz pakiet Firebase Unity SDK w wersji 5.5.0 i rozpakuj go w wygodnym miejscu.
- Otwórz projekt Unity Awesome Drawing Quiz i kliknij Assets > Import Package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet).
- W rozpakowanym pakiecie SDK zaimportuj pakiet SDK Zdalnej konfiguracji (
dotnet4/FirebaseAnalytics.unitypackage). - W oknie Import Unity package (Importowanie pakietu dla Unity) kliknij Import (Importuj).
6. Łączenie AdMob z projektem Firebase
Aby połączyć aplikacje z Firebase, wykonaj podane niżej czynności.
- Zaloguj się na konto AdMob na stronie https://apps.admob.com.
- Na pasku bocznym kliknij „Aplikacje”.
- Wybierz „Awesome Drawing Quiz” (Super quiz rysunkowy). Jeśli nie widzisz jej na liście ostatnio używanych aplikacji, kliknij „Zobacz wszystkie”, aby wyświetlić listę wszystkich aplikacji dodanych przez Ciebie w AdMob.
- Na pasku bocznym kliknij „Ustawienia aplikacji”.
- Kliknij Połącz z Firebase.
- Wybierz opcję „Połącz z istniejącym projektem w Firebase i utwórz nową aplikację w Firebase”. Następnie w menu wybierz projekt „Awesome Drawing Quiz”.
- Po kliknięciu przycisku „DALEJ” zobaczysz komunikat „Połączono”. Aby zakończyć, kliknij przycisk „GOTOWE”.
Po połączeniu aplikacji w AdMob z projektem w Firebase odblokujesz dodatkowe funkcje w konsolach AdMob i Firebase:
Karta przychodów (AdMob)
Na karcie Przychody możesz w jednym miejscu sprawdzić wszystkie możliwe źródła przychodów. Obsługiwane źródła przychodów to:
- AdMob (szacunkowe)
- Sieci reklamowe z zapośredniczeniem (zaobserwowane)
- Zakupy w aplikacji
- Zakupy e-commerce

Karta danych o użytkownikach (AdMob)
Na karcie danych o użytkownikach możesz sprawdzić, jak zmiany w reklamach mogą wpływać na zachowania użytkowników.

Raport dotyczący reklam z nagrodą (AdMob)
Raport dotyczący reklam z nagrodą zawiera różne dane, które pomagają wydawcom zrozumieć, jak użytkownicy wchodzą w interakcje z ich reklamami z nagrodą.

Karta Łączne przychody (Firebase)
Po połączeniu aplikacji AdMob z Firebase na karcie Łączne przychody na panelu Firebase będą wyświetlane przychody z AdMob oraz przychody z zakupów w aplikacji i zakupów e-commerce.

Raportowanie zdarzeń związanych z reklamami (Firebase)
Zdarzenia związane z reklamami (zdarzenia kliknięcia, wyświetlenia i nagrody) są zbierane automatycznie i dostępne do użycia w Google Analytics dla Firebase.

7. Uruchamianie projektu
Po skompilowaniu i uruchomieniu projektu zobaczysz ten ekran po uruchomieniu aplikacji.

Gdy klikniesz „ROZPOCZNIJ GRĘ”, na ekranie pojawi się rysunek. Twoim zadaniem jest odgadnięcie nazwy rysunku na podstawie wskazówki wyświetlanej u góry, z której możesz wywnioskować pierwszą literę i długość nazwy rysunku.

Jeśli nie masz pomysłu na nazwę rysunku, możesz pominąć poziom, klikając przycisk „POMIŃ”.
Możesz potrzebować dodatkowej wskazówki, która pomoże Ci odgadnąć odpowiedź. Dodatkową wskazówkę możesz uzyskać, klikając przycisk „PODPOWIEDŹ” i oglądając reklamę wideo z nagrodą. Po obejrzeniu reklamy otrzymasz dodatkową literę jako nagrodę.

8. Dodawanie zdarzeń w aplikacji
Aby dokładnie poznać ścieżkę użytkownika w Awesome Drawing Quiz, zdefiniujesz kilka zdarzeń niestandardowych, które będą śledzić zachowania użytkowników w grze w ten sposób:
Nazwa zdarzenia | Aktywowano… | Parametry |
game_start | gdy użytkownik rozpoczyna nową grę. | brak |
level_start | gdy użytkownik rozpoczyna nowy poziom (nowy quiz rysunkowy) w ramach etapu. (na jednym etapie jest 6 poziomów) | level_name |
level_wrong_answer | gdy użytkownik prześle błędną odpowiedź. | level_name |
ad_reward_prompt | gdy użytkownik naciśnie przycisk podpowiedzi i zostanie poproszony o obejrzenie reklamy wideo z nagrodą. | ad_unit_id |
ad_reward_impression | gdy użytkownik zaczyna oglądać reklamę wideo z nagrodą. | ad_unit_id |
level_success | gdy użytkownik prześle prawidłową odpowiedź (ukończy poziom). | level_name, number_of_attempts, elapsed_time_sec, hint_used |
level_fail | gdy użytkownik pominie poziom. | level_name, number_of_attempts, elapsed_time_sec, hint_used |
game_complete | po zakończeniu gry. | number_of_correct_answers |
Opis każdego parametru powiązanego z poszczególnymi zdarzeniami:
Nazwa zdarzenia | Nazwa parametru | Opis |
level_start | level_name | Nazwa rysunku widoczna na poziomie (np. „banan”). |
level_wrong_answer | level_name | Nazwa rysunku widoczna na poziomie (np. „banan”). |
ad_reward_prompt | ad_unit_id | Identyfikator jednostki reklamowej używany do wyświetlania reklamy wideo z nagrodą. |
ad_reward_impression | ad_unit_id | Identyfikator jednostki reklamowej używany do wyświetlania reklamy wideo z nagrodą. |
level_success | level_name | Nazwa rysunku widoczna na poziomie (np. „banan”). |
level_success | number_of_attempts | Liczba prób przejścia poziomu |
level_success | elapsed_time_sec | Czas potrzebny na ukończenie poziomu w sekundach |
level_success | hint_used | Czy użytkownik skorzystał z podpowiedzi (obejrzał reklamę wideo z nagrodą), aby przejść poziom (1 – skorzystał z podpowiedzi, 0 – przeszedł poziom bez podpowiedzi). |
level_fail | level_name | Nazwa rysunku widoczna na poziomie (np. „banan”). |
level_fail | number_of_attempts | Liczba prób przejścia poziomu |
level_fail | elapsed_time_sec | Czas potrzebny na ukończenie poziomu w sekundach |
level_fail | hint_used | Czy użytkownik skorzystał z podpowiedzi (obejrzał reklamę wideo z nagrodą), aby przejść poziom (1 – skorzystał z podpowiedzi, 0 – przeszedł poziom bez podpowiedzi). |
game_complete | number_of_correct_answers | Liczba poziomów ukończonych w grze |
Tworzenie klasy pomocniczej do rejestrowania zdarzeń niestandardowych
Aby łatwo rejestrować zdarzenia Analytics, utwórz klasę pomocniczą do zarządzania zdarzeniami niestandardowymi.
Najpierw utwórz nowy folder w folderze Assets/Scripts i nadaj mu nazwę Analytics. Następnie utwórz nowy skrypt C# i nadaj mu nazwę QuizAnalytics.cs w folderze Analytics.
Dodaj do pliku QuizAnalytics.cs ten kod:
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);
}
}
}
Rejestrowanie zdarzeń analitycznych w grze
Otwórz plik Game.cs w folderze Assets/Scripts/Scenes. Aby użyć klasy QuizAnalytics, która znajduje się w przestrzeni nazw AwesomeDrawingQuiz.Analytics, dodaj dyrektywę using w ten sposób:
Scenes/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
Następnie w funkcji Start() wywołaj funkcję QuizAnalytics.SetScreenName(), aby zmienić nazwę bieżącego ekranu. Wywołaj też funkcję QuizAnalytics.LogGameStart(), aby wskazać, że gra się rozpoczęła.
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();
...
}
Następnie w funkcjach wywołania zwrotnego dodaj wywołania do rejestrowania zdarzeń niestandardowych w ten sposób:
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);
...
}
Na koniec zaktualizuj plik Main.cs w folderze Assets/Scripts/Scenes. Zanim wywołasz jakąkolwiek metodę w pakiecie Firebase SDK, sprawdź, czy Firebase jest gotowy.
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. Debugowanie zdarzeń Analytics
Aby sprawdzić, czy zdarzenia są prawidłowo rejestrowane, możesz użyć raportu DebugView. DebugView umożliwia wyświetlanie w czasie zbliżonym do rzeczywistego nieprzetworzonych danych o zdarzeniach rejestrowanych przez aplikację na urządzeniach programistycznych.
Jest to bardzo przydatne do celów weryfikacji na etapie instrumentacji w trakcie programowania. Pomaga wykrywać błędy i pomyłki w implementacji Analytics.
Włączanie trybu debugowania na urządzeniu z Androidem
Zdarzenia logowane w aplikacji są zwykle grupowane w ciągu około godziny i przesyłane razem. Aby na bieżąco sprawdzać poprawność implementacji Analytics, musisz włączyć tryb debugowania na urządzeniu używanym do programowania, aby przesyłać zdarzenia z minimalnymi opóźnieniami.
Najpierw otwórz narzędzie Terminal w Android Studio. Znajduje się na dolnym pasku narzędzi.

Następnie wykonaj to polecenie (upewnij się, że testowe urządzenie z Androidem jest podłączone do komputera lub Android Emulator jest uruchomiony):
adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz
Tryb debugowania pozostanie włączony, dopóki nie wyłączysz go tym poleceniem:
adb shell setprop debug.firebase.analytics.app .none.
Włączanie trybu debugowania na iOS
Aby włączyć tryb debugowania Analytics na urządzeniu, którego używasz do programowania, wpisz w Xcode ten argument wiersza poleceń:
-FIRDebugEnabled
Tryb debugowania pozostanie włączony, dopóki nie wyłączysz go za pomocą tego argumentu:
-FIRDebugDisabled
Debugowanie zdarzeń Analytics za pomocą raportu DebugView
Po włączeniu trybu debugowania na urządzeniu testowym otwórz konsolę Firebase i w menu wybierz DebugView. Następnie na urządzeniu testowym uruchom grę, aby zobaczyć, jak zdarzenia są rejestrowane i wyświetlane w raporcie DebugView.

Aby uzyskać szczegółowe informacje o poszczególnych zdarzeniach, kliknij ich nazwy. Na przykład na tym zrzucie ekranu widać szczegóły parametrów powiązanych ze zdarzeniem level_start.

Więcej informacji znajdziesz w tym artykule w Centrum pomocy.
10. Włącz raportowanie parametrów
Google Analytics dla Firebase domyślnie zbiera łączną liczbę zdarzeń, ale raportowanie parametrów niestandardowych musi być włączone osobno dla każdego parametru zdarzenia, który Cię interesuje. Po włączeniu tej opcji Google Analytics dla Firebase będzie wyświetlać dodatkowe karty z informacjami o statystykach parametrów niestandardowych.
Aby zarejestrować parametry niestandardowe dla zdarzenia:
- Otwórz konsolę Firebase i wybierz utworzony wcześniej projekt Awesome Drawing Quiz.
- W menu nawigacyjnym kliknij Zdarzenia.
- W wierszu zdarzenia, które chcesz zmodyfikować, kliknij
> Edytuj raportowane parametry.

- W polu Wpisz nazwę parametru wpisz nazwę parametru, który chcesz rejestrować.
Uwaga: jeśli nie zostaną znalezione pasujące wyniki, wpisz nazwę parametru i kliknij DODAJ.
5. Zapoznaj się z tabelą poniżej i w polu Typ ustaw odpowiednio wartość Tekst lub Liczba. W przypadku parametrów liczbowych ustaw też wartość w polu Jednostka miary. 6. Aby zakończyć konfigurację, kliknij przycisk ZAPISZ.
Włącz raportowanie parametrów w przypadku każdego zdarzenia wymienionego poniżej.
Nazwa zdarzenia | Nazwa parametru | Typ parametru | Jednostka miary |
level_start | level_name | Tekst | Nie dotyczy |
level_wrong_answer | level_name | Tekst | Nie dotyczy |
level_success | level_name | Tekst | Nie dotyczy |
level_success | number_of_attempts | Liczba | Standardowe |
level_success | elapsed_time_sec | Liczba | Sekundy |
level_success | hint_used | Liczba | Standardowe |
level_fail | level_name | Tekst | Nie dotyczy |
level_fail | number_of_attempts | Liczba | Standardowe |
level_fail | elapsed_time_sec | Liczba | Sekundy |
level_fail | hint_used | Liczba | Standardowe |
game_complete | number_of_correct_answers | Liczba | Standardowe |
W przykładzie poniżej pokazujemy konfigurację raportowania parametrów niestandardowych dla zdarzenia level_success:

Po skonfigurowaniu raportowania parametrów możesz wyświetlać parametry powiązane z każdym zdarzeniem, w przypadku którego włączono raportowanie parametrów.

11. Wyświetlanie statystyk z raportu Zdarzenie
Po dodaniu kilku zdarzeń w grze powinna być możliwość udzielenia odpowiedzi na pytania dotyczące zachowania użytkowników w grze. Oto kilka informacji, które możesz uzyskać z raportu o zdarzeniach w Firebase.
Na którym poziomie jest najwięcej błędnych odpowiedzi?
Aby odpowiedzieć na to pytanie, musisz sprawdzić, ile level_wrong_answer zdarzeń zostało wywołanych na każdym poziomie.
W raporcie o zdarzeniach kliknij level_wrong_answer. W raporcie zdarzenia level_wrong_answer odszukaj kartę level_name. Na tej karcie zobaczysz wartości powiązane z parametrem level_name w ten sposób:

Z powyższego zrzutu ekranu wynika, że najwięcej błędnych odpowiedzi uzyskano w przypadku horyzontu, co oznacza, że jest on trudniejszy dla użytkowników niż pozostałe poziomy.
Na podstawie tych informacji możesz zdecydować, aby nie udostępniać trudnych poziomów początkującym użytkownikom, aby utrzymać wysoki wskaźnik utrzymania.
Ile prób przejścia poziomu podejmowano średnio?
W Awesome Drawing Quiz użytkownicy mogą przesyłać odpowiedzi na każdym poziomie tyle razy, ile chcą.
Ponieważ w przypadku parametru number_of_attempts w zdarzeniu level_success masz włączone raportowanie parametrów, możesz wyświetlać szczegółowe dane dotyczące tego parametru.
W raporcie o zdarzeniach kliknij zdarzenie level_success. W raporcie zdarzenia level_success odszukaj kartę number_of_attemps. Na karcie zobaczysz średnią liczbę prób w ten sposób:

Na podstawie tych danych możesz zoptymalizować średni poziom trudności gry. Jeśli na przykład średnia liczba prób jest zbyt bliska 1, możesz nieco utrudnić grę.
Czy użytkownicy próbowali rozwiązać pytanie, korzystając z podpowiedzi, mimo że ostatecznie nie udało im się przejść poziomu?
Gdy użytkownik zdecyduje się pominąć poziom, wywoływane jest level_failzdarzenie. Decyzja użytkownika może być spowodowana wieloma czynnikami.
Ponieważ jednak gra może podać wskazówkę po obejrzeniu przez użytkownika reklamy wideo z nagrodą, ważne jest, aby wiedzieć, czy użytkownik próbował przejść poziom z pomocą wskazówki.
W raporcie o zdarzeniach kliknij zdarzenie level_fail. W raporcie zdarzenia level_fail odszukaj kartę hint_used. Zobaczysz średnią liczbę parametrów zdarzeń hint_used. Pamiętaj, że gdy używana jest wskazówka, wartość jest ustawiona na 1, a gdy nie jest używana, wartość jest ustawiona na 0.

Jeśli liczby na karcie hint_used są bliskie 0, oznacza to, że nagroda (wskazówka) nie jest zbyt atrakcyjna dla użytkowników. Tracisz też możliwość zwiększenia przychodów z reklam wideo z nagrodą.
Warto więc rozważyć zwiększenie atrakcyjności nagrody, aby użytkownicy mogli bardziej zaangażować się w grę, a przychody z reklam wideo z nagrodą wzrosły.
Ile poziomów średnio udało się ukończyć w każdej grze?
Każda gra w Awesome Drawing Quiz ma 6 poziomów. Gdy użytkownik ukończy 6 poziomów (niezależnie od tego, czy udało mu się je przejść), wywoływane jest zdarzenie game_complete z parametrem number_of_correct_answers.
Ponieważ number_of_correct_answers wskazuje, ile poziomów użytkownik ukończył (czyli na ilu poziomach udzielił prawidłowej odpowiedzi), odpowiedź znajdziesz, sprawdzając dane parametru number_of_correct_answers.
W raporcie o zdarzeniach kliknij zdarzenie game_complete. W raporcie o zdarzeniu game_complete odszukaj kartę number_of_correct_answers. Zobaczysz średnią liczbę parametrów zdarzeń number_of_correct_answers.

Jeśli średnia liczba ukończonych poziomów jest zbyt niska, warto zmienić układ gry, aby ułatwić graczom przejście poziomu i zachęcić ich do dalszej rozgrywki.
12. Wszystko gotowe
Ukończono ćwiczenia AdMob+Firebase 101 Unity. Ukończony kod tego ćwiczenia znajdziesz w folderze
101-complete_and_102-base.
W kolejnej części tego laboratorium poświęconego AdMob i Firebase dowiesz się, jak używać ścieżki do wizualizacji przepływu zdarzeń w aplikacji. Wyjaśnimy też, jak używać Zdalnej konfiguracji i testów A/B do optymalizacji wartości parametru w grze bez aktualizacji aplikacji.