1. Wprowadzenie
Reklamy mają istotny wpływ na ogólne wrażenia użytkownika aplikacji. Dobre implementacje reklam mogą poprawić wygodę korzystania z aplikacji, a nawet polepszyć utrzymanie i zaangażowanie użytkowników. Na przykład reklamy z nagrodą umożliwiają nagradzanie użytkowników pieniędzmi w aplikacji lub przedmiotami za oglądanie reklam wideo, dzięki czemu mogą oni dotrzeć na wyższy poziom, gdzie w przeciwnym razie utknęliby i zrezygnowaliby z aplikacji.
Pamiętaj jednak, że nie jest to łatwe. Możesz zadać sobie pytania: jak często mają być wyświetlane te reklamy? Gdzie i kiedy należy je wyświetlać? Jaka ma być nagroda? Odpowiedź różni się w zależności od aplikacji lub miejsca docelowego. Nie ma uniwersalnej odpowiedzi.
Dzięki Google Analytics dla Firebase, AdMob i innym zaawansowanym i łatwym w użyciu narzędziom dostępnym w Firebase znacznie łatwiej i usprawniej dopracowywanie aplikacji w sposób oparty na danych. Dziś pokażemy, od czego zacząć.
Co utworzysz
To pierwsze z 3 ćwiczeń w Codelabs, które przeprowadzą Cię przez proces tworzenia aplikacji o nazwie Niesamowite rysowanie – gry, która pozwala graczom odgadnąć nazwę rysunku. Pokażemy też, jak dodać do gry reklamy z nagrodą i usługi Firebase.
W ramach tego ćwiczenia w programie zintegrujesz Google Analytics dla Firebase, aby rejestrować niektóre 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ć statystyki aplikacji wyświetlane w konsoli Firebase
Czego potrzebujesz
- Unity w wersji 2018.4.4f1 lub nowszej
- Xcode 10 lub nowsza (aby utworzyć środowisko docelowe na iOS).
- konto Google,
- urządzenia testowego z Androidem 5.0 lub nowszym z kablem USB do podłączenia urządzenia lub emulatora Androida z AVD(urządzeniem wirtualnym z Androidem) z obrazem systemu obsługującym Sklep Play/interfejsy API Google
- Urządzenie z iOS lub symulator z systemem iOS 8.0 lub nowszym
Jak oceniasz swój poziom znajomości AdMob?
Jak oceniasz swój poziom znajomości Firebase?
2. Skonfiguruj środowisko programistyczne
Pobierz kod
Kliknij przycisk, aby pobrać cały kod do tego ćwiczenia w programowaniu:
Rozpakuj pobrany plik ZIP. Spowoduje to rozpakowanie folderu głównego o nazwie admob-firebase-codelabs-unity-master
.
...lub skopiuj repozytorium GitHub z poziomu wiersza poleceń.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Repozytorium zawiera 4 te foldery:
- 101-base – rozpoczęcie kodu, który utworzysz w tym ćwiczeniu z programowania.
- 101-complete_and_102-base – ukończony kod do tego ćwiczenia z programowania lekcji z programowania.
- 102-complete – ukończony kod ćwiczenia ze 102 ćwiczeń z programowania.
Przygotowywanie wymaganych plików
Quiz rysunkowy z Awesome korzysta z kilku kodów open source, które są wymagane do skompilowania i uruchomienia projektu.
Otwórz terminal i przejdź do katalogu głównego repozytorium. Następnie uruchom w terminalu ./gradlew :prepareThirdPartyFiles
(gradlew.bat :prepareThirdPartyFiles
w systemie Windows), aby skopiować wymagane pliki do projektu.
Importowanie aplikacji startowej
Uruchom Unity i na ekranie powitalnym wybierz „Open” (Otwórz). Następnie wybierz katalog 101-base z pobranego kodu.
Projekt powinien być teraz otwarty w Unity.
3. Skonfiguruj jednostkę reklamy wideo z nagrodą (opcjonalnie)
Aplikacja startowa zawiera już specjalną jednostkę reklam wideo z nagrodą. Jeśli nie chcesz tworzyć nowego konta na koncie AdMob, możesz pominąć ten krok.
Konfiguracja na Androidzie
Aby utworzyć na koncie nową aplikację AdMob:
- Otwórz konsolę AdMob.
- W menu Aplikacje kliknij Dodaj aplikację.
- Na pytanie „Czy Twoja aplikacja została opublikowana w Google Play lub App Store?” odpowiedz „NIE”.
- Nazwij aplikację „Super rysowanie quizu”. wybierz „Android” jako platformę, a następnie kliknij „Dodaj”.
Po utworzeniu aplikacji AdMob na koncie wykonaj opisane poniżej czynności, aby utworzyć nową jednostkę reklam wideo z nagrodą.
- W interfejsie AdMob kliknij menu Aplikacje i z listy aplikacji wybierz „Niesamowite quizy”.
- Kliknij menu Jednostki reklamowe, a następnie DODAJ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklam wideo z nagrodami.
- Wybierz Reklama z nagrodą jako format reklamy.
- Podaj preferowaną nazwę jednostki reklamowej. Następnie ustaw wartość nagrody na 1, a nagrodę jako "hint" (jest to nagroda, którą aplikacja obecnie otrzymuje użytkownikom). Następnie kliknij UTWÓRZ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklamy wideo z nagrodą.
- Po utworzeniu zobaczysz instrukcje podobne do tych.
- Wróć do projektu Unity i zaktualizuj stałe identyfikator aplikacji AdMob oraz identyfikator jednostki reklamowej do wartości utworzonych 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ć na koncie nową aplikację AdMob:
- Otwórz konsolę AdMob.
- W menu Aplikacje kliknij Dodaj aplikację.
- Na pytanie „Czy Twoja aplikacja została opublikowana w Google Play lub App Store?” odpowiedz „NIE”.
- Nazwij aplikację „Super rysowanie quizu”. wybierz „iOS” jako platformę, a następnie kliknij „Dodaj”.
Po utworzeniu aplikacji AdMob na koncie wykonaj opisane poniżej czynności, aby utworzyć nową jednostkę reklam wideo z nagrodą.
- W interfejsie AdMob kliknij menu Aplikacje i z listy aplikacji wybierz „Niesamowite quizy”.
- Kliknij menu Jednostki reklamowe, a następnie DODAJ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklam wideo z nagrodami.
- Wybierz Reklama z nagrodą jako format reklamy.
- Podaj preferowaną nazwę jednostki reklamowej. Następnie ustaw wartość nagrody na 1, a nagrodę jako "hint" (jest to nagroda, którą aplikacja obecnie otrzymuje użytkownikom). Następnie kliknij UTWÓRZ JEDNOSTKĘ REKLAMOWĄ, aby utworzyć nową jednostkę reklamy wideo z nagrodą.
- Po utworzeniu zobaczysz instrukcje podobne do tych.
- Wróć do projektu Unity i zaktualizuj stałe identyfikator aplikacji AdMob oraz identyfikator jednostki reklamowej do wartości utworzonych 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. Dodaj wtyczkę do reklam mobilnych Google dla Unity
Importowanie wtyczki
Aby wyświetlać reklamy AdMob w aplikacji na Unity, musisz dodać do projektu wtyczkę do reklam mobilnych Google dla Unity.
- Pobierz pakiet wtyczki Google do reklam mobilnych Unity 3.18.1. (Pamiętaj, że te ćwiczenia z programowania mogą nie być zgodne z inną wersją wtyczki).
- w projekcie Unity Awesome Rysunek. W projekcie wybierz Zasoby > Importuj pakiet > pakiet niestandardowy.
- Zaimportuj GoogleMobileAds.unitypackage do pobranego projektu.
Skonfiguruj identyfikator aplikacji AdMob
W edytorze Unity wybierz Zasoby > Reklamy mobilne Google > Ustawienia w menu.
Włącz AdMob, klikając pole wyboru Włączone w sekcji Google AdMob. Następnie wpisz ten identyfikator aplikacji AdMob:
- System Android:
ca-app-pub-3940256099942544~3048611032
- System iOS:
ca-app-pub-3940256099942544~2753522596
5. Skonfiguruj projekt Firebase
Tworzenie nowego projektu w konsoli Firebase
- Otwórz konsolę Firebase.
- Kliknij Dodaj projekt i nadaj projektowi nazwę „Super quiz na rysowanie”.
Dodawanie aplikacji Unity
- Na ekranie przeglądu nowego projektu kliknij Add Firebase to your Unity app (Dodaj Firebase do aplikacji Unity).
- Zaznacz pole wyboru Zarejestruj jako aplikację na iOS.
- Wpisz identyfikator pakietu na iOS: com.codelab.awesomedrawingquiz.unity
- Jako nazwę aplikacji podaj: Quiz rysunkowy (Unity w iOS)
- Zaznacz pole wyboru Zarejestruj jako aplikację na Androida.
- Wpisz nazwę pakietu na Androida w formacie: com.codelab.awesomedrawingquiz.unity
- Nadaj aplikacji pseudonim: Quiz rysunkowy (Unity na Androida)
- Wybierz Zarejestruj aplikację, aby zarejestrować aplikacje na Androida i iOS.
Dodawanie plików konfiguracyjnych Firebase do projektu Unity
Na następnym ekranie pojawi się ekran, z którego możesz pobrać plik konfiguracyjny zawierający wszystkie metadane Firebase niezbędne dla Twojej aplikacji. Pobierz pliki google-service.json i GoogleService-Info.plist, a następnie przenieś je do folderu Assets w projekcie Unity.
Dodaj pakiet SDK Firebase Analytics
- Pobierz pakiet Firebase Unity SDK 5.5.0 i rozpakuj go w dogodnym miejscu.
- Otwórz projekt Unity Quiz na rysowanie i kliknij Zasoby > Importuj pakiet > pakiet niestandardowy.
- Zaimportuj pakiet SDK Zdalnej konfiguracji (
dotnet4/FirebaseAnalytics.unitypackage
) z rozpakowanego pakietu SDK. - W oknie importowania pakietu Unity kliknij Importuj.
6. Łączenie AdMob z projektem Firebase
Wykonaj poniższe czynności, aby połączyć aplikacje z Firebase.
- Zaloguj się na swoje konto AdMob na stronie https://apps.admob.com.
- Na pasku bocznym kliknij Aplikacje.
- Wybierz „Niesamowite rysowanie – quiz”. Jeśli nie widzisz jej na liście ostatnio uruchamianych aplikacji, możesz kliknąć Wyświetl wszystkie aplikacje, aby wyświetlić listę wszystkich aplikacji dodanych przez Ciebie do AdMob.
- Kliknij Ustawienia aplikacji na pasku bocznym.
- Kliknij Połącz z Firebase.
- Wybierz opcję „Połącz z istniejącym projektem Firebase i utwórz nową aplikację Firebase”. Następnie z menu wybierz projekt „Niesamowite rysowanie”.
- Gdy klikniesz przycisk „DALEJ”, pojawi się komunikat „Połączono”. Aby zakończyć, kliknij przycisk „GOTOWE”.
Połączenie aplikacji w AdMob z projektem Firebase umożliwi dostęp do dodatkowych funkcji zarówno w AdMob, jak i w konsoli Firebase. Oto niektóre z nich:
Karta Przychody (AdMob)
Na karcie Przychody znajdziesz całościowe spojrzenie na wszystkie możliwe źródła przychodów w jednym miejscu. Obsługiwane źródła przychodów:
- AdMob (dane szacunkowe)
- Zapośredniczone sieci reklamowe (zaobserwowane)
- Zakupy w aplikacji
- Zakupy e-commerce
Karta Dane o użytkownikach (AdMob)
Na karcie danych o użytkownikach możesz sprawdzić, jak zmiany w wyświetlaniu reklam mogą wpływać na zachowanie użytkowników.
Raport na temat reklam z nagrodą (AdMob)
Raport na temat reklam z nagrodą zawiera szereg danych, które pomogą wydawcom zrozumieć, jak użytkownicy wchodzą w interakcje z ich reklamami.
Karta Łączne przychody (Firebase)
Po połączeniu aplikacji w AdMob z Firebase na karcie Łączne przychody w panelu Firebase będą widoczne przychody z AdMob oraz zakupy w aplikacji i zakupy e-commerce.
Raportowanie zdarzeń reklamowych (Firebase)
Zdarzenia związane z daną reklamą (zdarzenia kliknięcia, wyświetlenia i nagrody) są automatycznie zbierane i dostępne do użycia w Google Analytics dla Firebase.
7. Uruchamianie projektu
Gdy skompilujesz i uruchomisz projekt, po uruchomieniu aplikacji zobaczysz poniższy ekran.
Po kliknięciu ROZPOCZNIJ GRY na ekranie pojawi się rysunek. Twoim zadaniem jest odgadnięcie nazwy rysunku, korzystając z podpowiedzi wyświetlanej u góry.
Jeśli nie wiesz, jak nazywa się rysunek, możesz pominąć ten poziom, klikając przycisk „POMIŃ”.
Możesz potrzebować dodatkowej wskazówki, która pomoże Ci odgadnąć odpowiedź. Aby uzyskać dodatkową wskazówkę, kliknij przycisk WSKAZÓWKA i obejrzyj reklamę wideo z nagrodą. Po obejrzeniu reklamy 1 dodatkowy list wyświetli się jako nagroda.
8. Dodaj zdarzenia w aplikacji
Aby w quizie rysunkowym lepiej poznać ścieżkę użytkownika, zdefiniuj kilka zdarzeń niestandardowych, które będą śledzić jego zachowanie w grze:
Nazwa zdarzenia | Wywoływane... | Parametry |
game_start | gdy użytkownik uruchamia nową grę. | brak |
level_start | gdy użytkownik rozpoczyna nowy poziom (nowy quiz na rysowanie) na scenie. (jeden etap ma 6 poziomów) | level_name |
level_wrong_answer | gdy użytkownik prześle nieprawidłową odpowiedź. | level_name |
ad_reward_prompt | gdy użytkownik klika przycisk podpowiedzi i otrzymuje prośbę 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 przesyła prawidłową odpowiedź (czyści poziom). | nazwa_poziomu, liczba_prób, czas_upływu_sekundy, użycie_podpowiedzi |
level_fail | gdy użytkownik pominie poziom. | nazwa_poziomu, liczba_prób, czas_upływu_sekundy, użycie_podpowiedzi |
game_complete | Po zakończeniu gry | number_of_correct_answers |
Opis poszczególnych parametrów powiązanych z poszczególnymi zdarzeniami:
Nazwa zdarzenia | Nazwa parametru | Opis |
level_start | level_name | Nazwa rysunku wyświetlana na tym poziomie (np. „banan”) |
level_wrong_answer | level_name | Nazwa rysunku wyświetlana na tym poziomie (np. „banan”) |
ad_reward_prompt | ad_unit_id | Identyfikator jednostki reklamowej służący do wyświetlania reklamy wideo z nagrodą |
ad_reward_impression | ad_unit_id | Identyfikator jednostki reklamowej służący do wyświetlania reklamy wideo z nagrodą |
level_success | level_name | Nazwa rysunku wyświetlana na tym poziomie (np. „banan”) |
level_success | number_of_attempts | Liczba prób osiągnięcia poziomu |
level_success | elapsed_time_sec | Czas, po którym nastąpiło skasowanie poziomu (w sekundach). |
level_success | hint_used | Określa, czy użytkownik użył wskazówki (obejrzeł reklamę wideo z nagrodą) czy nie, aby ukończyć poziom (1 – użył podpowiedzi / 0: opuścił poziom bez podpowiedzi). |
level_fail | level_name | Nazwa rysunku wyświetlana na tym poziomie (np. „banan”) |
level_fail | number_of_attempts | Liczba prób osiągnięcia poziomu |
level_fail | elapsed_time_sec | Czas, po którym nastąpiło skasowanie poziomu (w sekundach). |
level_fail | hint_used | Określa, czy użytkownik użył wskazówki (obejrzeł reklamę wideo z nagrodą) czy nie, aby ukończyć poziom (1 – użył podpowiedzi / 0: opuścił poziom bez podpowiedzi). |
game_complete | number_of_correct_answers | Liczba poziomów zaliczonych w grze |
Tworzenie klasy pomocniczej do rejestrowania zdarzeń niestandardowych
Aby łatwo rejestrować zdarzenia analityczne, utworzysz 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 poniższy kod do pliku QuizAnalytics.cs
.
Analytics/QuizAnalytics.cs
using Firebase.Analytics;
namespace AwesomeDrawingQuiz.Analytics {
public class QuizAnalytics {
private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";
private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";
private const string EVENT_LEVEL_FAIL = "level_fail";
private const string EVENT_LEVEL_SUCCESS = "level_success";
private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";
private const string EVENT_GAME_START = "game_start";
private const string EVENT_GAME_COMPLETE = "game_complete";
private const string PARAM_AD_UNIT_ID = "ad_unit_id";
private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";
private const string PARAM_HINT_USED = "hint_used";
private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";
private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";
public const string SCREEN_MAIN = "main";
public const string SCREEN_GAME = "game";
public static void LogGameStart() {
FirebaseAnalytics.LogEvent(EVENT_GAME_START);
}
public static void LogLevelStart(string levelName) {
FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogLevelWrongAnswer(string levelName) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogAdRewardPrompt(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogAdRewardImpression(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogLevelSuccess(
string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogLevelFail(
string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogGameComplete(int numberOfCorrectAnswers) {
FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE,
PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
}
public static void SetScreenName(string screenName) {
FirebaseAnalytics.SetCurrentScreen(screenName, null);
}
}
}
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 podany niżej sposób.
Sceny/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
Następnie w funkcji Start()
wywołaj QuizAnalytics.SetScreenName()
, by zmienić nazwę bieżącego ekranu. Wywołaj też QuizAnalytics.LogGameStart()
, aby poinformować, że gra się rozpoczęła.
Sceny/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:
Sceny/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 jakiekolwiek metody w pakiecie SDK Firebase, sprawdź, czy usługa Firebase jest gotowa.
Sceny/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ń analitycznych
Aby sprawdzić, czy zdarzenia są prawidłowo rejestrowane, możesz użyć raportu DebugView. DebugView umożliwia wyświetlanie nieprzetworzonych danych zdarzeń rejestrowanych przez aplikację na urządzeniach używanych do programowania w czasie zbliżonym do rzeczywistego.
Jest to bardzo przydatne podczas weryfikacji na etapie instrumentacji tworzenia aplikacji, a także pozwala wykryć błędy i błędy w implementacji analityki.
Włączanie trybu debugowania na urządzeniu z Androidem
Ogólnie zdarzenia rejestrowane w aplikacji są grupowane i przesyłane razem na okres około godziny. Aby na bieżąco sprawdzać implementację analityki, musisz włączyć tryb debugowania na urządzeniu, którego używasz do programowania. Pozwoli Ci to przesyłać zdarzenia z minimalnym opóźnieniem.
Najpierw otwórz narzędzie Terminal w Android Studio. Znajduje się on na dolnym pasku narzędzi.
Następnie wykonaj to polecenie (sprawdź, czy testowe urządzenie z Androidem jest podłączone do komputera lub czy emulator Androida jest uruchomiony):
adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz
Tryb debugowania pozostanie włączony, dopóki nie wyłączysz tego polecenia:
adb shell setprop debug.firebase.analytics.app .none.
Włączanie trybu debugowania w systemie 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 zagraj w grę na urządzeniu testowym, aby zobaczyć zdarzenia rejestrowane i wyświetlane w raporcie DebugView.
Aby wyświetlić szczegółowe informacje o każdym zdarzeniu, kliknij jego nazwę. Przykładowy zrzut ekranu poniżej przedstawia szczegóły parametru powiązanego ze zdarzeniem level_start
.
Więcej informacji znajdziesz w artykule w Centrum pomocy DebugView.
10. Włącz raportowanie parametrów
Google Analytics dla Firebase domyślnie gromadzi łączną liczbę zdarzeń, ale musisz włączyć raportowanie parametrów niestandardowych w przypadku każdego parametru zdarzenia, który Cię interesuje. Po włączeniu tej funkcji w Google Analytics dla Firebase pojawią się dodatkowe karty ze statystykami dotyczącymi parametrów niestandardowych.
Aby zarejestrować parametry niestandardowe dla zdarzenia:
- Otwórz konsolę Firebase i wybierz utworzony wcześniej projekt Niesamowite rysowanie.
- Kliknij Zdarzenia w menu nawigacyjnym.
- W wierszu zdarzenia, które chcesz zmienić, kliknij . Edytuj raportowanie parametrów.
- 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 Tekst lub Liczba. W przypadku parametrów liczbowych pamiętaj też o ustawieniu pola 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 |
Ten przykład przedstawia konfigurację raportowania parametrów niestandardowych w przypadku zdarzenia level_success
:
Po skonfigurowaniu raportowania parametrów zobaczysz parametry powiązane z każdym zdarzeniem, które ma włączone raportowanie parametrów.
11. Uzyskiwanie informacji z raportu Zdarzenia
Po dodaniu kilku wydarzeń do gry powinno być już możliwe odpowiadanie na pytania dotyczące zachowań użytkowników w grze. Oto kilka statystyk, jakie zawiera raport Zdarzenia Firebase.
Na którym poziomie znajduje się najwięcej nieprawidłowych odpowiedzi?
Aby uzyskać odpowiedź na to pytanie, musisz sprawdzić, ile zdarzeń level_wrong_answer
zostało wywołanych na każdym poziomie.
W raporcie Zdarzenia kliknij level_wrong_answer
. W raporcie zdarzeń level_wrong_answer
odszukaj kartę level_name
. Zobaczysz na tej karcie wartości powiązane z parametrem level_name
w ten sposób.
Jak widać na zrzucie ekranu powyżej, możesz łatwo dowiedzieć się, że horyzont zawiera największą liczbę błędnych odpowiedzi, co oznacza, że dla użytkowników jest on trudny w porównaniu z innymi poziomami.
Dzięki tym informacjom możesz nie udostępniać trudnych poziomów początkującym użytkownikom, aby utrzymać wysoki wskaźnik utrzymania.
Ile średnio próbowano ukończyć poziom?
W quizie na rysowanie użytkownicy mogą przesyłać odpowiedzi na poszczególne poziomy dowolną liczbę razy.
Masz włączone raportowanie parametrów dotyczących parametru number_of_attempts
w zdarzeniu level_success
, więc możesz przeglądać szczegółowe dane dotyczące tego parametru.
W raporcie Zdarzenia kliknij zdarzenie level_success
. W raporcie zdarzeń level_success
odszukaj kartę number_of_attemps
. Średnia liczba prób połączenia z tą kartą możesz sprawdzić w następujący sposób:
Możesz wykorzystać te statystyki, aby średnio zoptymalizować poziom trudności gry. Jeśli na przykład średnia liczba prób jest zbyt zbliżona do 1, gra może być nieco bardziej wymagająca.
Czy użytkownicy próbowali rozwiązać pytanie, korzystając z podpowiedzi, mimo że w końcu nie udało im się ukończyć poziomu?
Gdy użytkownik zdecyduje się pominąć etap, wywoływane jest zdarzenie level_fail
. Użytkownik może podjąć taką decyzję z różnych powodów.
Ponieważ jednak po obejrzeniu reklamy wideo z nagrodą gra może dawać mu wskazówkę, warto wiedzieć, czy nie próbował on pokonać poziomu za pomocą podpowiedzi.
W raporcie Zdarzenia kliknij zdarzenie level_fail
. W raporcie zdarzeń level_fail
odszukaj kartę hint_used
. Zobaczysz średnią liczbę parametrów zdarzenia hint_used
. Pamiętaj, że gdy wskazówka jest używana, ma ona wartość 1, podczas gdy gdy jest ona nieużywana, ma wartość 0.
Jeśli liczby na karcie hint_used
są bliskie 0, oznacza to, że nagroda (podpowiedź) nie jest zbyt atrakcyjna dla użytkowników. Tracisz także możliwość zwiększenia przychodów z reklam wideo z nagrodą.
Warto więc zadbać o to, aby nagroda była bardziej przydatna dla użytkowników, co pozwoli im na głębsze zaangażowanie w grę, co przełoży się na wzrost przychodów z reklam wideo z nagrodą.
Ile średnio poziomów zostało ukończonych w każdej grze?
W quizie „Niesamowite rysowanie” znajduje się łącznie 6 poziomów na każdą grę. Gdy użytkownik ukończy 6 poziomów (niezależnie od tego, czy udało się go ukończyć czy nie, na każdym z nich) zostaje wywołane zdarzenie game_complete
z parametrem number_of_correct_answers
.
Parametr number_of_correct_answers
wskazuje, ile poziomów zaliczonych przez użytkownika (podaje poprawną odpowiedź), więc odpowiedź możesz znaleźć, patrząc na dane parametru number_of_correct_answers
.
W raporcie Zdarzenia kliknij game_complete
zdarzenie. W raporcie zdarzeń game_complete znajdź kartę number_of_correct_answers
. Zobaczysz średnią liczbę parametrów zdarzenia number_of_correct_answers
.
Jeśli średnia liczba pokonanych poziomów jest zbyt niska, warto rozważyć zmianę organizacji tak, aby użytkownicy mogli pobić się w grę, tak aby mogli w niej grać dalej, nie tracąc zainteresowania.
12. Wszystko gotowe
Udało Ci się ukończyć ćwiczenia z programowania Unity dostępne w AdMob i Firebase. Ukończony kod ćwiczenia z programowania znajdziesz w folderze 101-complete_and_102-base.
Z następnej części kursu z programowania AdMob i Firebase dowiesz się, jak za pomocą ścieżki wizualizować przepływ zdarzeń w aplikacji. Dowiesz się też, jak korzystać ze Zdalnej konfiguracji i testów A/B, aby optymalizować wartość parametrów w grze bez aktualizowania aplikacji.