AdMob+Firebase 101 Unity: настройка и настройка Основы аналитики

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) с образом системы, поддерживающим 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

Репозиторий содержит четыре папки:

  • android_studio_folder.png 101-base — начальный код, который вы создадите в этой лаборатории кода.
  • android_studio_folder.png 101-complete_and_102-base — завершенный код для этой лаборатории кода и начальный код для 102 лаборатории кода.
  • android_studio_folder.png 102-complete — завершенный код для 102 codelab.

Подготовьте необходимые файлы

В Awesome Drawing Quiz используется несколько кодов с открытым исходным кодом, которые необходимы для компиляции и запуска проекта.

Откройте терминал и перейдите в корневой каталог репозитория. Затем запустите ./gradlew :prepareThirdPartyFiles ( gradlew.bat :prepareThirdPartyFiles в Windows) с терминала, чтобы скопировать необходимые файлы в проект.

Импортируйте начальное приложение

Запустите Unity, выберите «Открыть» на экране приветствия. Затем выберите каталог с базой 101 из скачанного кода.

Теперь у вас должен быть открыт проект в Unity.

3. Настройте рекламный блок видео с вознаграждением (необязательно)

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

Настройка для Android

Чтобы создать новое приложение AdMob в своем аккаунте, следуйте следующим инструкциям:

  1. Перейдите в консоль AdMob .
  2. В меню «Приложения» нажмите « Добавить приложение ».
  3. На вопрос «Опубликовали ли вы свое приложение в Google Play или App Store?» ответьте « НЕТ».
  4. Назовите приложение «Потрясающий тест по рисованию», выберите «Android» в качестве платформы, затем нажмите « Добавить ».

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

  1. Откройте меню «Приложения» в интерфейсе AdMob, затем выберите «Потрясающий тест по рисованию» в списке приложений.
  2. Откройте меню «Рекламные блоки» , затем нажмите «ДОБАВИТЬ РЕКЛАМНЫЙ БЛОК» , чтобы создать новый рекламный блок видео с вознаграждением.
  3. Выберите «С вознаграждением» в качестве формата объявления.

7672f41ec611101b.png

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

6d067814a2c38264.png

  1. После успешного создания вы увидите следующие инструкции.

4bc1b3b341a5a81c.png

  1. Вернитесь в проект Unity и обновите константы идентификатора приложения AdMob и идентификатора рекламного блока на те, которые вы создали на предыдущем шаге.

Объявления/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 в своем аккаунте, следуйте следующим инструкциям:

  1. Перейдите в консоль AdMob .
  2. В меню «Приложения» нажмите « Добавить приложение ».
  3. На вопрос «Опубликовали ли вы свое приложение в Google Play или App Store?» ответьте « НЕТ».
  4. Назовите приложение «Потрясающий тест по рисованию», выберите «iOS» в качестве платформы, затем нажмите « Добавить ».

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

  1. Откройте меню «Приложения» в интерфейсе AdMob, затем выберите «Потрясающий тест по рисованию» в списке приложений.
  2. Откройте меню «Рекламные блоки» , затем нажмите «ДОБАВИТЬ РЕКЛАМНЫЙ БЛОК» , чтобы создать новый рекламный блок видео с вознаграждением.
  3. Выберите «С вознаграждением» в качестве формата объявления.

7672f41ec611101b.png

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

6d067814a2c38264.png

  1. После успешного создания вы увидите следующие инструкции.

4bc1b3b341a5a81c.png

  1. Вернитесь в проект Unity и обновите константы идентификатора приложения AdMob и идентификатора рекламного блока на те, которые вы создали на предыдущем шаге.

Объявления/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.

  1. Загрузите пакет плагина Google Mobile Ads Unity 3.18.1 . (Обратите внимание, что эта Codelab может быть несовместима с другой версией плагина)
  2. В проекте Unity Awesome Drawing Quiz . В проекте перейдите в «Активы» > «Импортировать пакет» > «Пользовательский пакет» .
  3. Импортируйте пакет GoogleMobileAds.unity в скачанный проект.

Настройка идентификатора приложения AdMob

В редакторе Unity выберите в меню «Ресурсы» > «Google Mobile Ads» > «Настройки» .

44fc84fe88235c1f.png

Включите AdMob, установив флажок «Включено» в разделе Google AdMob . Затем введите идентификатор приложения AdMob следующим образом:

  • Android: ca-app-pub-3940256099942544~3048611032
  • iOS: ca-app-pub-3940256099942544~2753522596

a6ad7402d4daf330.png

5. Настройка проекта Firebase

Создайте новый проект из консоли Firebase.

  1. Перейдите в консоль Firebase .
  2. Выберите «Добавить проект» и назовите свой проект «Потрясающий тест по рисованию».

Добавьте приложение Unity

  1. На обзорном экране вашего нового проекта нажмите «Добавить Firebase в приложение Unity» .
  2. Установите флажок «Зарегистрироваться как приложение для iOS».
  3. Введите идентификатор пакета iOS: com.codelab.awesomedrawingquiz.unity .
  4. Укажите псевдоним приложения: Awesome Drawing Quiz (Unity для iOS).
  5. Установите флажок «Зарегистрироваться как приложение для Android».
  6. Введите имя пакета Android: com.codelab.awesomedrawingquiz.unity .
  7. Укажите псевдоним приложения: Awesome Drawing Quiz (Unity для Android).
  8. Выберите «Зарегистрировать приложение» , чтобы зарегистрировать приложения для Android и iOS.

Добавьте файлы конфигурации Firebase в проект Unity.

Затем вам будет предложено экран, на котором вы сможете загрузить файл конфигурации, содержащий все необходимые метаданные Firebase для вашего приложения. Загрузите файлы google-service.json и GoogleService-Info.plist , затем переместите их оба в папку android_studio_folder.png Папка Assets в проекте Unity.

331c165d80ba105e.png

Добавить Firebase Analytics SDK

  1. Загрузите Firebase Unity SDK 5.5.0 и разархивируйте его в удобное место.
  2. Откройте проект Awesome Drawing Quiz Unity, выберите «Ресурсы» > «Импортировать пакет» > «Пользовательский пакет» .
  3. Из разархивированного SDK импортируйте SDK Remote Config ( dotnet4/FirebaseAnalytics.unitypackage ).
  4. В окне «Импорт пакета Unity» нажмите «Импорт» .

6. Свяжите AdMob с проектом Firebase

Выполните следующие действия, чтобы связать свои приложения с Firebase.

  1. Войдите в свою учетную запись AdMob на странице https://apps.admob.com .
  2. Нажмите «Приложения» на боковой панели.
  3. Выберите «Потрясающий тест по рисованию» . Если вы не видите его в списке последних приложений, вы можете нажать «Просмотреть все приложения», чтобы найти список всех приложений, которые вы добавили в AdMob.
  4. Нажмите «Настройки приложения» на боковой панели.
  5. Нажмите Связать с Firebase.
  6. Выберите вариант «Связать с существующим проектом Firebase и создать новое приложение Firebase» . Затем выберите проект «Потрясающий тест по рисованию» в раскрывающемся меню.
  7. После того, как вы нажмете кнопку «ПРОДОЛЖИТЬ» , вы увидите сообщение «Привязка установлена ​​успешно» . Нажмите кнопку «ГОТОВО», чтобы закончить.

Как только вы свяжете свое приложение AdMob с проектом Firebase, оно откроет некоторые дополнительные функции как в AdMob, так и в консоли Firebase, а именно:

Карточка дохода (AdMob)

На карточке «Доход» вы можете комплексно рассмотреть все возможные потоки доходов в одном месте. Поддерживаемые источники дохода:

  • Реклама в приложении (оценка)
  • Опосредованные рекламные сети (наблюдаемые)
  • Покупки в приложении
  • Покупки в электронной коммерции

10fe118249e11150.png

Карта пользовательских показателей (AdMob)

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

5f56366f1b31d4a1.png

Отчет об объявлениях с вознаграждением (AdMob)

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

658a2868777690ea.png

Карточка общего дохода (Firebase)

После того как вы свяжете свое приложение AdMob с Firebase, на карточке общего дохода на панели управления Firebase будет отображаться доход от AdMob, а также покупки в приложении и покупки электронной коммерции.

98cb283977b023a.png

Отчеты о рекламных событиях (Firebase)

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

bf77bd8c00c1441b.png

7. Запустите проект

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

f5fbf4565c5d8647.png

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

bbdf4d23fb08a519.pngad82d7e657945c4d.png

Если вы понятия не имеете, как называется рисунок, вы можете пропустить уровень, нажав кнопку «ПРОПУСТИТЬ» .

Возможно, вам понадобится дополнительная подсказка, которая поможет вам угадать ответ. Дополнительную информацию можно получить, нажав кнопку «ПОДСКАЗКА» и посмотрев видеорекламу с вознаграждением . После завершения просмотра рекламы в качестве награды будет раскрыта еще одна буква.

8c33687361f83a13.pngb048d6587c10e9df.png

8. Добавьте события приложения

Чтобы глубже понять путь пользователя в викторине «Потрясающее рисование», вы определите несколько пользовательских событий, которые отслеживают поведение пользователя в игре, следующим образом:

Название события

Сработало...

Параметры

game_start

когда пользователь начинает новую игру

никто

level_start

когда пользователь начинает новый уровень (новый тест по рисованию) на этапе. (в одном этапе 6 уровней)

имя_уровня

level_wrong_answer

когда пользователь отправляет неправильный ответ

имя_уровня

ad_reward_prompt

когда пользователь нажимает кнопку подсказки и ему предлагается посмотреть видеообъявление с вознаграждением

ad_unit_id

ad_reward_impression

когда пользователь начинает смотреть видеорекламу с вознаграждением

ad_unit_id

level_success

когда пользователь отправляет правильный ответ (очищает уровень)

имя_уровня, количество_попыток, прошедшее_время_сек, использованная_подсказка

level_fail

когда пользователь пропускает уровень

имя_уровня, количество_попыток, прошедшее_время_сек, использованная_подсказка

game_complete

когда игра закончится

количество_правильных_ответов

Описание каждого параметра, связанного с каждым событием, следующее:

Название события

Имя параметра

Описание

level_start

имя_уровня

Название рисунка, показанного на уровне (например, «банан»)

level_wrong_answer

имя_уровня

Название рисунка, показанного на уровне (например, «банан»)

ad_reward_prompt

ad_unit_id

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

ad_reward_impression

ad_unit_id

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

level_success

имя_уровня

Название рисунка, показанного на уровне (например, «банан»)

level_success

количество_попыток

Количество попыток пройти уровень

level_success

elapsed_time_sec

Прошедшее время прохождения уровня, в секундах

level_success

подсказка_использовано

Использовал ли пользователь подсказку (просмотрел видеорекламу с вознаграждением) или нет, чтобы пройти уровень (1: использовал подсказку / 0: прошел уровень без подсказки)

level_fail

имя_уровня

Название рисунка, показанного на уровне (например, «банан»)

level_fail

количество_попыток

Количество попыток пройти уровень

level_fail

elapsed_time_sec

Прошедшее время прохождения уровня, в секундах

level_fail

подсказка_использовано

Использовал ли пользователь подсказку (просмотрел видеорекламу с вознаграждением) или нет, чтобы пройти уровень (1: использовал подсказку / 0: прошел уровень без подсказки)

game_complete

количество_правильных_ответов

Количество пройденных уровней в игре

Создайте вспомогательный класс для регистрации пользовательских событий.

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

Сначала создайте новую папку в папке Assets/Scripts и назовите ее Analytics . Затем создайте новый сценарий C# и назовите его QuizAnalytics.cs в папке Analytics .

Добавьте приведенный ниже код в файл QuizAnalytics.cs .

Аналитика/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 следующим образом.

Сцены/Game.cs

using AwesomeDrawingQuiz.Ads;

// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;

...

namespace AwesomeDrawingQuiz.Scene {
   ...
}

Затем в функции Start() вызовите QuizAnalytics.SetScreenName() чтобы изменить имя текущего экрана. Кроме того, вызовите QuizAnalytics.LogGameStart() , чтобы указать, что игра началась.

Сцены/Game.cs

void Start () {
    // TODO: Log screen name (101)
    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);

    ...

    SetHintButtonEnabled(false);

    // TODO: Log game_start event (101)
    QuizAnalytics.LogGameStart();
    
    ...
}

Затем в функциях обратного вызова добавьте вызовы для регистрации пользовательских событий следующим образом:

Сцены/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 готова.

Сцены/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. Он расположен на нижней панели инструментов.

c8dc1b4f08a224b8.png

Затем выполните следующую команду (убедитесь, что тестовое устройство Android подключено к вашему компьютеру или эмулятор Android запущен):

adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz

Такое поведение сохраняется до тех пор, пока вы явно не отключите режим отладки, выполнив следующую команду:

adb shell setprop debug.firebase.analytics.app .none.

Включить режим отладки на iOS

Чтобы включить режим отладки Analytics на вашем устройстве разработки, укажите следующий аргумент командной строки в Xcode:

-FIRDebugEnabled

Такое поведение сохраняется до тех пор, пока вы явно не отключите режим отладки, указав следующий аргумент командной строки:

-FIRDebugDisabled

Отладка событий Analytics с помощью DebugView

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

827059255d09ac00.png

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

475db00d05d03ab8.png

Более подробную информацию можно найти в статье справочного центра DebugView .

10. Включить отчеты о параметрах

Google Analytics для Firebase по умолчанию будет собирать общее количество событий, но отчетность по специальным параметрам необходимо включить явно для каждого интересующего вас параметра события. Как только эта функция включена, Google Analytics для Firebase будет отображать дополнительные карточки для отображения. статистика по пользовательским параметрам.

Чтобы зарегистрировать пользовательские параметры для события:

  1. Перейдите в консоль Firebase и выберите проект Awesome Drawing Quiz, который вы создали ранее.
  2. Нажмите «События» в меню навигации.
  1. В строке события, которое вы хотите изменить, нажмите 73afe611adf58774.png > Редактировать отчеты о параметрах.

aad40de06ee0c3ad.png

  1. В поле Введите имя параметра введите имя параметра, который вы хотите зарегистрировать.

Примечание. Если соответствие не найдено, просто введите имя параметра и нажмите «ДОБАВИТЬ». e066c761aae4797f.png 5. Обратитесь к таблице ниже и установите в поле Тип значение Текст или Число соответственно. Для числовых параметров обязательно задайте также поле «Единица измерения» . 6. Нажмите кнопку СОХРАНИТЬ , чтобы завершить настройку.

Включите отчеты о параметрах для каждого события, указанного ниже.

Название события

Имя параметра

Тип параметра

Единица измерения

level_start

имя_уровня

Текст

Н/Д

level_wrong_answer

имя_уровня

Текст

Н/Д

level_success

имя_уровня

Текст

Н/Д

level_success

количество_попыток

Число

Стандартный

level_success

elapsed_time_sec

Число

Секунды

level_success

подсказка_использовано

Число

Стандартный

level_fail

имя_уровня

Текст

Н/Д

level_fail

количество_попыток

Число

Стандартный

level_fail

elapsed_time_sec

Число

Секунды

level_fail

подсказка_использовано

Число

Стандартный

game_complete

количество_правильных_ответов

Число

Стандартный

В следующем примере показана настройка отчетов по пользовательским параметрам для события level_success :

6d569c8c27df2914.png

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

d1a37589d54bca6b.png

11. Получите информацию из отчета о мероприятии.

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

На каком уровне больше всего неправильных ответов?

Чтобы ответить на этот вопрос, вам следует узнать, сколько событий level_wrong_answer было вызвано на каждом уровне.

Нажмите level_wrong_answer в отчете о событиях. В отчете о событии level_wrong_answer найдите карточку level_name . Вы увидите значения, связанные с параметром level_name на этой карточке, следующим образом.

25da426bbc0c612c.png

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

Используя информацию, полученную здесь, вы можете решить не предоставлять сложные уровни начинающим пользователям, чтобы сохранить высокий уровень удержания.

Сколько в среднем было попыток пройти уровень?

В викторине «Потрясающее рисование» пользователи могут отправлять ответы на каждый уровень столько, сколько захотят.

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

Щелкните событие level_success в отчете о событиях. В отчете о событии level_success найдите карточку number_of_attemps . Вы увидите среднее количество попыток для этой карты следующим образом:

43de290f9f1a0ac9.png

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

Пытались ли пользователи решить вопрос, получив подсказку, хотя им наконец не удалось пройти уровень?

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

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

Щелкните событие level_fail в отчете о событиях. В отчете о событии level_fail найдите hint_used . Вы увидите среднее количество параметров hint_used . Обратите внимание, что при использовании подсказки ему присваивается значение 1, а если подсказка не использовалась, ему присваивается значение 0.

313814372cd7c8a4.png

Если цифры на 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 .

d9eeaa019d1bceb4.png

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

12. Все готово!

Вы завершили работу над AdMob+Firebase 101 Unity Codelab. Вы можете найти готовый код для этой Codelab на сайте android_studio_folder.png Папка 101-complete_and_102-base .

В следующей части Лаборатории кода AdMob+Firebase вы узнаете, как использовать воронку для визуализации потока событий приложения. Кроме того, будет рассказано, как использовать удаленную настройку и A/B-тестирование для оптимизации значения параметра в игре без обновления приложения.