1. Введение
Реклама — важнейшая часть общего пользовательского опыта вашего приложения. Удачная реализация рекламы может улучшить общее впечатление от приложения и даже повысить удержание и вовлеченность пользователей. Например, реклама с вознаграждением позволяет вознаграждать пользователей внутриигровой валютой или предметами за просмотр видеорекламы, чтобы пользователи могли достичь новых высот, на которых в противном случае они могли бы остановиться и уйти.
Однако создать превосходный рекламный опыт непросто. У вас могут возникнуть вопросы, например: Как часто следует показывать эти объявления? Где и когда их следует показывать? Каким должно быть вознаграждение? К сожалению, ответ различается от приложения к приложению и от места к месту. Универсального ответа не существует.
Благодаря Google Analytics для Firebase, AdMob и множеству других мощных, но простых в использовании инструментов, предлагаемых Firebase, тонкая настройка вашего приложения на основе данных стала намного проще и эффективнее. Сегодня мы покажем вам, как начать!
Что вы построите
Этот практический урок — первый из трёх, которые помогут вам создать приложение под названием Awesome Drawing Quiz , игру, в которой игроки должны угадать название рисунка. В нём будет показано, как интегрировать в игру рекламу с вознаграждением и сервисы Firebase.
В этом практическом занятии вы интегрируете Google Analytics для Firebase, чтобы записывать важные события приложения. Также вы узнаете, как читать аналитику приложения, отображаемую в консоли Firebase.
|
|
Что вы узнаете
- Как настроить Google Analytics для Firebase в вашем приложении
- Как записывать события приложения
- Как читать аналитику приложения, отображаемую в консоли Firebase
Что вам понадобится
- Unity 2018.4.4f1 или выше
- Xcode 10 или выше (для сборки целевой платформы для iOS)
- Аккаунт Google
- Для тестирования вам потребуется устройство с Android 5.0+, подключенное через USB-кабель, или эмулятор Android, работающий с AVD (Android Virtual Device) и использующий образ системы, поддерживающий API Play Store/Google.
- Устройство iOS или симулятор под управлением iOS 8.0 или выше.
Как бы вы оценили свой уровень опыта работы с AdMob?
Как бы вы оценили свой уровень опыта работы с Firebase?
2. Настройка среды разработки.
Скачать код
Нажмите на следующую кнопку, чтобы загрузить весь код для этого практического занятия:
Распакуйте загруженный zip-файл. В результате будет распакована корневая папка с именем admob-firebase-codelabs-unity-master .
...или клонируйте репозиторий GitHub из командной строки.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Репозиторий содержит четыре папки следующего вида:
101-base — Начальный код, который вы будете создавать в этом практическом занятии.
101-complete_and_102-base — Завершенный код для этого практического занятия и начальный код для практического занятия 102.
102-complete — Завершенный код для лабораторной работы 102.
Подготовьте необходимые файлы.
В проекте Awesome Drawing Quiz используется несколько программ с открытым исходным кодом, необходимых для компиляции и запуска проекта.
Откройте терминал и перейдите в корневой каталог репозитория. Затем запустите в терминале команду ./gradlew :prepareThirdPartyFiles ( gradlew.bat :prepareThirdPartyFiles в Windows), чтобы скопировать необходимые файлы в проект.
Импортируйте стартовое приложение
Запустите Unity, выберите «Открыть» на экране приветствия. Затем выберите каталог 101-base из загруженного вами кода.
Теперь проект должен быть открыт в Unity.
3. Настройка рекламного блока с видеорекламой, начисляемой за просмотр (необязательно)
В базовой версии приложения уже есть специальный блок видеорекламы с вознаграждением для вашего удобства. Вы можете пропустить этот шаг, если не хотите создавать новый блок в своем аккаунте AdMob.
Настройка для Android
Чтобы создать новое приложение AdMob в своем аккаунте, следуйте приведенным ниже инструкциям:
- Перейдите в консоль AdMob .
- В меню «Приложения» нажмите « Добавить приложение ».
- На вопрос «Опубликовали ли вы свое приложение в Google Play или App Store?» ответьте « НЕТ».
- Назовите приложение "Awesome Drawing Quiz", выберите "Android" в качестве платформы, затем нажмите " Добавить ".
После создания приложения AdMob в вашем аккаунте выполните описанные ниже шаги, чтобы создать новый рекламный блок с видеорекламой и вознаграждением.
- В интерфейсе AdMob перейдите в меню «Приложения» , затем выберите «Awesome Drawing Quiz» из списка приложений.
- Нажмите на меню «Рекламные блоки» , затем нажмите «ДОБАВИТЬ РЕКЛАМНЫЙ БЛОК» , чтобы создать новый рекламный блок с видеорекламой и вознаграждением.
- Выберите «Вознаграждение» для формата рекламы.

- Укажите название рекламного блока по своему усмотрению. Затем установите количество вознаграждений равным 1 , а элемент вознаграждения — «подсказка» (это те вознаграждения, которые приложение в настоящее время предоставляет пользователям). И нажмите « СОЗДАТЬ РЕКЛАМНЫЙ БЛОК» , чтобы создать новый рекламный блок «Видео с вознаграждением».

- После успешного создания вы увидите инструкции, подобные приведенным ниже.

- Вернитесь к проекту Unity и обновите константы идентификатора приложения AdMob и идентификатора рекламного блока, используя значения, созданные на предыдущем шаге.
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>";
...
}
}
Настройка для iOS
Чтобы создать новое приложение AdMob в своем аккаунте, следуйте приведенным ниже инструкциям:
- Перейдите в консоль AdMob .
- В меню «Приложения» нажмите « Добавить приложение ».
- На вопрос «Опубликовали ли вы свое приложение в Google Play или App Store?» ответьте « НЕТ».
- Назовите приложение "Awesome Drawing Quiz", выберите "iOS" в качестве платформы, затем нажмите " Добавить ".
После создания приложения AdMob в вашем аккаунте выполните описанные ниже шаги, чтобы создать новый рекламный блок с видеорекламой и вознаграждением.
- В интерфейсе AdMob перейдите в меню «Приложения» , затем выберите «Awesome Drawing Quiz» из списка приложений.
- Нажмите на меню «Рекламные блоки» , затем нажмите «ДОБАВИТЬ РЕКЛАМНЫЙ БЛОК» , чтобы создать новый рекламный блок с видеорекламой и вознаграждением.
- Выберите «Вознаграждение» для формата рекламы.

- Укажите название рекламного блока по своему усмотрению. Затем установите количество вознаграждений равным 1 , а элемент вознаграждения — «подсказка» (это те вознаграждения, которые приложение в настоящее время предоставляет пользователям). И нажмите « СОЗДАТЬ РЕКЛАМНЫЙ БЛОК» , чтобы создать новый рекламный блок «Видео с вознаграждением».

- После успешного создания вы увидите инструкции, подобные приведенным ниже.

- Вернитесь к проекту Unity и обновите константы идентификатора приложения AdMob и идентификатора рекламного блока, используя значения, созданные на предыдущем шаге.
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.
Импортируйте плагин
Для показа рекламы AdMob в приложении Unity необходимо добавить плагин Google Mobile Ads Unity в проект.
- Загрузите пакет плагина Google Mobile Ads Unity версии 3.18.1 . (Обратите внимание, что данный Codelab может быть несовместим с другими версиями плагина).
- В проекте Unity «Awesome Drawing Quiz» перейдите в раздел Assets > Import Package > Custom Package .
- Импортируйте файл GoogleMobileAds.unitypackage в загруженный вами проект.
Настройте идентификатор приложения AdMob
В редакторе Unity выберите в меню Assets > Google Mobile Ads > Settings .

Включите AdMob, установив флажок «Включено» в разделе Google AdMob . Затем введите идентификатор приложения AdMob следующим образом:
- Android:
ca-app-pub-3940256099942544~3048611032 - iOS:
ca-app-pub-3940256099942544~2753522596

5. Настройка проекта Firebase
Создайте новый проект из консоли Firebase.
- Перейдите в консоль Firebase .
- Выберите «Добавить проект» и назовите свой проект «Замечательная викторина по рисованию».
Добавьте приложение Unity
- На экране обзора вашего нового проекта нажмите «Добавить Firebase в ваше приложение Unity» .
- Установите флажок «Зарегистрировать как приложение для iOS».
- Введите идентификатор пакета iOS следующим образом: com.codelab.awesomedrawingquiz.unity
- Укажите псевдоним приложения следующим образом: Awesome Drawing Quiz (Unity on iOS)
- Установите флажок «Зарегистрировать как приложение для Android».
- Введите имя пакета Android следующим образом: com.codelab.awesomedrawingquiz.unity
- Укажите псевдоним приложения следующим образом: Awesome Drawing Quiz (Unity on Android)
- Выберите «Зарегистрировать приложение» , чтобы зарегистрировать приложения для Android и iOS.
Добавьте конфигурационные файлы Firebase в проект Unity.
Далее вам будет предложено загрузить конфигурационный файл, содержащий все необходимые метаданные Firebase для вашего приложения. Загрузите файлы google-service.json и GoogleService-Info.plist , затем переместите оба файла в папку...
Папка Assets в проекте Unity.

Добавить SDK Firebase Analytics
- Загрузите Firebase Unity SDK 5.5.0 и распакуйте его в удобное место.
- Откройте проект Awesome Drawing Quiz в Unity, перейдите в Assets > Import Package > Custom Package .
- Из распакованного SDK импортируйте Remote Config SDK (
dotnet4/FirebaseAnalytics.unitypackage). - В окне «Импорт пакета Unity» нажмите «Импорт» .
6. Свяжите AdMob с проектом Firebase.
Выполните следующие шаги, чтобы связать ваши приложения с Firebase.
- Войдите в свой аккаунт AdMob по адресу https://apps.admob.com .
- Нажмите «Приложения» на боковой панели.
- Выберите «Замечательная викторина по рисованию» . Если вы не видите её в списке недавно добавленных приложений, вы можете нажать «Посмотреть все приложения», чтобы просмотреть список всех приложений, которые вы добавили в AdMob.
- Нажмите «Настройки приложения» на боковой панели.
- Нажмите на ссылку Firebase.
- Выберите опцию «Привязать к существующему проекту Firebase и создать новое приложение Firebase» . Затем выберите проект «Awesome Drawing Quiz» из выпадающего меню.
- После нажатия кнопки «ПРОДОЛЖИТЬ» вы увидите сообщение «Связь успешно установлена» . Нажмите кнопку «ГОТОВО» , чтобы завершить процесс.
После привязки вашего приложения AdMob к проекту Firebase откроются дополнительные функции как в AdMob, так и в консоли Firebase, а именно:
Карта дохода (AdMob)
С помощью карточки «Доходы» вы можете получить целостное представление обо всех возможных источниках дохода в одном месте. Поддерживаемые источники дохода следующие:
- AdMob (ориентировочно)
- Медиа-рекламные сети (наблюдаемые данные)
- Встроенные покупки
- Покупки в интернет-магазине

Карточка пользовательских показателей (AdMob)
На вкладке «Показатели пользователей» вы можете увидеть, как изменения в показе рекламы могут повлиять на поведение пользователей.

Отчет по платным рекламным объявлениям (AdMob)
Отчет по рекламным объявлениям с вознаграждением предлагает множество показателей, которые помогут издателям понять, как пользователи взаимодействуют с их рекламными объявлениями, за которые начисляются вознаграждения.

Карта общего дохода (Firebase)
После того, как вы свяжете свое приложение AdMob с Firebase, на панели управления Firebase в разделе «Общий доход» отобразится доход от AdMob, а также от внутриигровых покупок и покупок в интернет-магазине.

Отчеты о рекламных событиях (Firebase)
События, относящиеся к конкретным объявлениям (клики, показы и события вознаграждения), автоматически собираются и доступны для использования в Google Analytics для Firebase.

7. Запустите проект.
После компиляции и запуска проекта при запуске приложения вы увидите следующий экран.

После нажатия кнопки «НАЧАТЬ ИГРУ» на экране появится рисунок. Ваша задача — угадать название рисунка, используя подсказку вверху, по которой вы сможете определить первую букву и длину названия рисунка.


Если вы не знаете названия рисунка, вы можете пропустить уровень, нажав кнопку «ПРОПУСТИТЬ» .
Возможно, вам понадобится дополнительная подсказка, которая поможет угадать ответ. Вы можете получить дополнительную подсказку, нажав кнопку «ПОДСКАЗКА» и посмотрев рекламный ролик с наградой . После просмотра ролика вам будет показана одна дополнительная буква в качестве награды.


8. Добавьте события приложения.
Для более глубокого понимания пути пользователя в игре Awesome Drawing Quiz вам потребуется определить несколько пользовательских событий, отслеживающих поведение пользователя в игре, следующим образом:
Название мероприятия | Сработало... | Параметры |
начало игры | когда пользователь начинает новую игру | никто |
уровень_начало | Когда пользователь начинает новый уровень (новый тест по рисованию) в рамках этапа. (В одном этапе 6 уровней) | level_name |
уровень_неправильный_ответ | когда пользователь отправляет неправильный ответ | level_name |
ad_reward_prompt | Когда пользователь нажимает кнопку подсказки, ему предлагается посмотреть рекламный видеоролик с вознаграждением. | ad_unit_id |
ad_reward_impression | когда пользователь начинает смотреть рекламное видео с вознаграждением | ad_unit_id |
уровень_успеха | когда пользователь отправляет правильный ответ (проходит уровень) | level_name, number_of_attempts, elapsed_time_sec, hint_used |
уровень_сбой | когда пользователь пропускает уровень | level_name, number_of_attempts, elapsed_time_sec, hint_used |
игра_завершено | когда игра закончится | количество_правильных_ответов |
Описание каждого параметра, связанного с каждым событием, приведено ниже:
Название мероприятия | Имя параметра | Описание |
уровень_начало | level_name | Название рисунка, показанного на уровне (например, «банан»). |
уровень_неправильный_ответ | level_name | Название рисунка, показанного на уровне (например, «банан»). |
ad_reward_prompt | ad_unit_id | Идентификатор рекламного блока, используемый для показа видеорекламы с вознаграждением. |
ad_reward_impression | ad_unit_id | Идентификатор рекламного блока, используемый для показа видеорекламы с вознаграждением. |
уровень_успеха | level_name | Название рисунка, показанного на уровне (например, «банан»). |
уровень_успеха | количество_попыток | Количество попыток пройти уровень |
уровень_успеха | затраченное_время_сек | Время, затраченное на прохождение уровня, в секундах. |
уровень_успеха | hint_used | Использовал ли пользователь подсказку (просмотрел ли рекламный ролик с вознаграждением) или нет для прохождения уровня (1: использовал подсказку / 0: прошел уровень без подсказки) |
уровень_сбой | level_name | Название рисунка, показанного на уровне (например, «банан»). |
уровень_сбой | количество_попыток | Количество попыток пройти уровень |
уровень_сбой | затраченное_время_сек | Время, затраченное на прохождение уровня, в секундах. |
уровень_сбой | hint_used | Использовал ли пользователь подсказку (просмотрел ли рекламный ролик с вознаграждением) или нет для прохождения уровня (1: использовал подсказку / 0: прошел уровень без подсказки) |
игра_завершено | количество_правильных_ответов | Количество пройденных уровней в игре |
Создайте вспомогательный класс для регистрации пользовательских событий.
Для упрощения регистрации аналитических событий вам потребуется создать вспомогательный класс для управления пользовательскими событиями.
Сначала создайте новую папку в папке Assets/Scripts и назовите её Analytics . Затем создайте новый скрипт на C# и назовите его QuizAnalytics.cs в папке Analytics .
Добавьте приведенный ниже код в файл 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);
}
}
}
Анализ событий в игре с помощью логов
Откройте файл Game.cs в папке Assets/Scripts/Scenes . Чтобы использовать класс QuizAnalytics , расположенный в пространстве имен AwesomeDrawingQuiz.Analytics , добавьте директиву using следующим образом.
Scenes/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
Далее, в функции Start() вызовите QuizAnalytics.SetScreenName() , чтобы изменить имя текущего экрана. Также вызовите QuizAnalytics.LogGameStart() чтобы указать, что игра началась.
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();
...
}
Далее, в функциях обратного вызова добавьте вызовы для регистрации пользовательских событий следующим образом:
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);
...
}
Наконец, обновите файл Main.cs в папке Assets/Scripts/Scenes . Перед вызовом любых методов в Firebase SDK убедитесь, что Firebase готов.
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. Отладочные аналитические события
Вы можете использовать DebugView для проверки корректности регистрации событий. DebugView позволяет просматривать необработанные данные событий, регистрируемые вашим приложением на устройствах разработки, практически в режиме реального времени.
Это очень полезно для целей проверки на этапе разработки инструментария и может помочь выявить ошибки и недочеты в реализации вашей аналитической системы.
Включить режим отладки на Android
Как правило, события, регистрируемые в вашем приложении, объединяются в пакеты в течение примерно одного часа и загружаются одновременно. Для проверки работоспособности вашей системы аналитики в режиме реального времени необходимо включить режим отладки на вашем устройстве разработки, чтобы загружать события с минимальными задержками.
Сначала откройте инструмент «Терминал» в Android Studio. Он расположен на нижней панели инструментов.

Затем выполните следующую команду (убедитесь, что тестовое устройство Android подключено к компьютеру или запущен эмулятор Android):
adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz
Такое поведение сохраняется до тех пор, пока вы явно не отключите режим отладки, выполнив следующую команду:
adb shell setprop debug.firebase.analytics.app .none.
Включите режим отладки на iOS
Чтобы включить режим отладки аналитики на вашем устройстве разработки, укажите следующий аргумент командной строки в Xcode:
-FIRDebugEnabled
Такое поведение сохраняется до тех пор, пока вы явно не отключите режим отладки, указав следующий аргумент командной строки:
-FIRDebugDisabled
Отладка аналитических событий с помощью DebugView
После включения режима отладки на тестовом устройстве перейдите в консоль Firebase и выберите DebugView в меню. Затем на тестовом устройстве запустите игру, чтобы увидеть события, регистрируемые и отображаемые в отчете DebugView.

Подробную информацию о каждом событии можно получить, щелкнув по его названию. Например, на следующем снимке экрана показаны подробные сведения о параметрах, связанных с событием level_start .

Для получения более подробной информации обратитесь к статье в справочном центре DebugView .
10. Включить отображение параметров
По умолчанию Google Analytics for Firebase собирает общее количество событий, но для каждого интересующего вас параметра события необходимо явно включить отчетность по пользовательским параметрам. После включения этой функции Google Analytics for Firebase будет отображать дополнительные карточки со статистикой по пользовательским параметрам.
Для регистрации пользовательских параметров для события:
- Перейдите в консоль Firebase и выберите созданный ранее проект Awesome Drawing Quiz .
- В меню навигации выберите «События» .
- В строке, соответствующей событию, которое вы хотите изменить, нажмите
> Редактировать отчеты по параметрам.

- В поле «Введите имя параметра» введите имя параметра, который вы хотите зарегистрировать.
Примечание: Если совпадение не найдено, просто введите имя параметра и нажмите «Добавить».
5. Обратитесь к таблице ниже и установите для поля «Тип» значение «Текст» или «Число» соответственно. Для числовых параметров обязательно установите также значение в поле «Единица измерения» . 6. Нажмите кнопку «СОХРАНИТЬ» , чтобы завершить настройку.
Включите отображение параметров для каждого из перечисленных ниже событий.
Название мероприятия | Имя параметра | Тип параметра | Единица измерения |
уровень_начало | level_name | Текст | Н/Д |
уровень_неправильный_ответ | level_name | Текст | Н/Д |
уровень_успеха | level_name | Текст | Н/Д |
уровень_успеха | количество_попыток | Число | Стандарт |
уровень_успеха | затраченное_время_сек | Число | Секунды |
уровень_успеха | hint_used | Число | Стандарт |
уровень_сбой | level_name | Текст | Н/Д |
уровень_сбой | количество_попыток | Число | Стандарт |
уровень_сбой | затраченное_время_сек | Число | Секунды |
уровень_сбой | hint_used | Число | Стандарт |
игра_завершено | количество_правильных_ответов | Число | Стандарт |
В следующем примере показана настройка формирования отчетов по пользовательским параметрам для события level_success :

После завершения настройки системы отчетности по параметрам вы сможете увидеть параметры, связанные с каждым событием, для которого включена отчетность по параметрам.

11. Получите ценные сведения из отчета о мероприятии.
Поскольку вы добавили в игру несколько событий, вы должны быть в состоянии ответить на вопросы, касающиеся поведения пользователей в игре. Вот несколько выводов, которые вы можете сделать из отчета по событиям Firebase.
На каком уровне зафиксировано наибольшее количество неправильных ответов?
Чтобы ответить на этот вопрос, вам следует выяснить, сколько событий level_wrong_answer было запущено для каждого уровня.
Щелкните level_wrong_answer в отчете о событиях. В отчете о событиях level_wrong_answer найдите карточку level_name . Вы увидите значения, связанные с параметром level_name на этой карточке, следующим образом.

Как видно из приведенного выше скриншота, уровень «Горизонт» имеет наибольшее количество неправильных ответов, что означает, что он сложнее для пользователей по сравнению с другими уровнями.
Используя полученные здесь данные, вы можете принять решение не предлагать сложные уровни для начинающих пользователей, чтобы поддерживать высокий уровень удержания.
Сколько попыток в среднем было предпринято для прохождения уровня?
В викторине Awesome Drawing Quiz пользователи могут отправлять ответы на каждый уровень неограниченное количество раз.
Поскольку вы включили отображение параметров для параметра number_of_attempts в событии level_success , вы можете просмотреть подробные метрики для этого параметра.
В отчете о событиях щелкните событие level_success . В отчете о событиях level_success найдите карточку number_of_attemps . Вы увидите среднее количество попыток на этой карточке следующим образом:

Полученные данные можно использовать для оптимизации средней сложности игры. Например, если среднее количество попыток слишком близко к 1, можно немного усложнить игру.
Пытались ли пользователи решить задачу, используя подсказку, даже если им в итоге не удалось пройти уровень?
Когда пользователь решает пропустить уровень, срабатывает событие level_fail . Причин для такого решения может быть множество.
Однако, поскольку игра может дать подсказку после просмотра рекламного видеоролика с вознаграждением, важно знать, пытался ли пользователь пройти уровень, используя хотя бы эту подсказку.
Щелкните событие level_fail в отчете о событиях. В отчете о событии level_fail найдите карточку hint_used . Вы увидите среднее количество параметров события hint_used . Обратите внимание, что когда подсказка используется, значение устанавливается равным 1, а когда подсказка не используется, значение устанавливается равным 0.

Если значения на карточке hint_used близки к 0, это сигнал о том, что вознаграждение (подсказка) не слишком привлекательно для пользователей. Кроме того, вы упускаете возможность увеличить доход от рекламы с видео, за которую начисляется вознаграждение.
Поэтому следует подумать о том, чтобы сделать вознаграждение более полезным для пользователей, чтобы они могли глубже вовлекаться в игру, а также чтобы увеличить доход от рекламы в видеороликах с вознаграждением.
Сколько уровней в среднем было пройдено в каждой игре?
В игре Awesome Drawing Quiz всего 6 уровней в каждой части. После того, как пользователь пройдет шесть уровней (независимо от того, прошел он каждый уровень или нет), срабатывает событие game_complete , передающее параметр number_of_correct_answers .
Поскольку number_of_correct_answers указывает, сколько уровней пользователь прошёл (дал правильный ответ), вы можете найти ответ, посмотрев метрики параметра number_of_correct_answers .
В отчете о событиях щелкните событие game_complete . В отчете о событии game_complete найдите карточку number_of_correct_answers . Вы увидите среднее количество параметров события number_of_correct_answers .

Если среднее количество пройденных уровней слишком низкое, следует перестроить игру, чтобы помочь игрокам пройти уровень и продолжить играть, не теряя интереса.
12. Всё готово!
Вы завершили практическое занятие по AdMob+Firebase 101 в Unity. Вы можете найти готовый код для этого занятия на [ссылка].
Папка 101-complete_and_102-base .
В следующей части мастер-класса по AdMob+Firebase вы узнаете, как использовать воронку для визуализации потока событий приложения. Также мы рассмотрим, как использовать удаленную конфигурацию и A/B-тестирование для оптимизации значений параметров в игре без обновления приложения.