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

1. Введение

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

Однако создать отличную рекламу непросто. У вас могут возникнуть вопросы, например: Как часто следует показывать эти объявления? Где и когда их показывать? Какой должна быть награда? К сожалению, ответ варьируется от приложения к приложению и от места размещения к месту размещения. Универсального ответа не существует.

Благодаря Google Analytics для Firebase, AdMob и нескольким другим мощным, но простым в использовании инструментам, которые предлагает Firebase, точная настройка вашего приложения на основе данных стала намного проще и оптимальнее. Сегодня мы покажем вам, как можно начать!

Что ты построишь

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

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

Если при работе с этой лабораторией кода у вас возникнут какие-либо проблемы (ошибки в коде, грамматические ошибки, нечеткие формулировки и т. д.), сообщите об этом с помощью ссылки «Сообщить об ошибке» в левом нижнем углу лабораторий кода.

Что вы узнаете

  • Как настроить Google Analytics для Firebase в вашем приложении
  • Как записывать события приложения
  • Как читать аналитику приложения, отображаемую в консоли Firebase

Что вам понадобится

  • Android-студия версии 4.1+
  • Аккаунт Google
  • Тестовое устройство с Android 5.0+ с USB-кабелем для подключения вашего устройства или эмулятор Android под управлением AVD (виртуальное устройство Android) с образом системы, поддерживающим API Play Store/Google.

Как бы вы оценили свой опыт работы с AdMob?

Новичок Средний Опытный

Как бы вы оценили свой уровень опыта работы с Firebase?

Новичок Средний Опытный

2. Настройка среды разработки

Загрузите код

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

Распакуйте загруженный zip-файл. Это распакует корневую папку с именем admob-firebase-codelabs-android .

…или клонируйте репозиторий GitHub из командной строки.

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android

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

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

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

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

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

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

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

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

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

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

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

7672f41ec611101b.png

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

6d067814a2c38264.png

  1. После успешного создания вы увидите инструкции, подобные следующим: ff872a005a07b75e.png
  2. Вернитесь в проект Android и обновите константы идентификатора приложения AdMob и идентификатора рекламного блока на те, которые вы создали на предыдущем шаге.

строки.xml

<!-- Update the value with your AdMob app id -->
<string name="admob_app_id">YOUR_ADMOB_APP_ID</string>

Игровая Активность. КТ

// Update the value with your Rewarded Video ad unit id
private const val AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";

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

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

  1. Перейдите в консоль Firebase .
  2. Выберите «Добавить проект» и назовите свой проект «Потрясающий тест по рисованию». Убедитесь, что переключатель «Включить Google Analytics для этого проекта» включен.
  3. Выберите учетную запись Google Analytics, которую вы планируете использовать. Для большинства вариантов выбора учетной записи по умолчанию для Firebase должно быть достаточно, но если у вас есть другая учетная запись Google Analytics, которую вы хотите использовать, выберите ее здесь.
  4. Нажмите Создать проект .

Добавьте приложение для Android

  1. На обзорном экране нового проекта нажмите «Добавить Firebase в приложение Android» .
  2. Введите имя пакета лаборатории кода: com.codelab.awesomedrawingquiz .
  3. Установите псевдоним для своего приложения: Удивительная викторина по рисованию
  4. Оставьте поле SHA-1 пустым, поскольку для этого проекта SHA-1 не требуется.
  5. Выберите Зарегистрировать приложение , чтобы зарегистрировать свое приложение.

Добавьте файл google-services.json в свое приложение.

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

32419a0fa25a1405.png

Объявить версии зависимостей

Начнем с добавления версии каждой зависимости, необходимой для интеграции Firebase в проект. Откройте файл dependencies.gradle , расположенный в корне проекта, затем добавьте плагин google-services, Firebase Analytics SDK и версию Firebase Core SDK.

зависимости.gradle

ext {
    ...

    // TODO: Declare google-services plugin version (101)
    googleServicesPluginVersion = '4.3.4'

    ...

    // TODO: Declare Firebase BOM version (101)                                                                                                                                                                                                   
    firebaseBomVersion = '26.2.0'

    ...
}

Примените плагин Google-services к своему приложению

Плагин google-services использует файл google-services.json для настройки вашего приложения на использование Firebase.

Добавьте google-services в качестве пути к классам в файле build.gradle , расположенном в корневом каталоге проекта.

build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ...
    
    dependencies {
        classpath "com.android.tools.build:gradle:$androidPluginVersion"

        // TODO: Add google-services plugin (101)
        classpath "com.google.gms:google-services:$googleServicesPluginVersion"

        ...
    }
}

...

Затем примените плагин google-services , добавив строку в файл app/build.gradle следующим образом:

приложение/build.gradle

apply plugin: 'com.android.application'

// TODO: Apply google-services plugin (101)
apply plugin: 'com.google.gms.google-services'

android {
    ...
}

dependencies {
    ...
}

Добавьте Firebase SDK в проект

По-прежнему в файле app/build.gradle добавьте Analytics SDK к зависимостям приложения.

приложение/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Import the Firebase BoM (101)
    implementation platform("com.google.firebase:firebase-bom:$firebaseBomVersion")

    // COMPLETE: Add Firebase Analytics dependency (101)
    implementation 'com.google.firebase:firebase-analytics-ktx'

    ...
}

...

Синхронизируйте наш проект с файлами Gradle.

Чтобы убедиться, что все зависимости доступны для вашего приложения, синхронизируйте свой проект с файлами Gradle. Выберите «Файл» > «Синхронизировать проект с файлами Gradle», чтобы синхронизировать проект с файлами Gradle.

5. Свяжите 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

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

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

15f1d8041988974c.png

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

8e87e96256d6874a.png9c4a0143c3234cb2.png

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

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

edcf6f0d833ea4ea.png47ab9a07b1c71711.png

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

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

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

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

Параметры

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

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

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

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

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

Сначала создайте новый файл Kotlin (не класс Kotlin) и назовите его QuizAnalytics.kt в пакете com.codelab.awesomedrawingquiz . Создайте поля, которые определяют название ваших пользовательских событий и их параметры.

QuizAnalytics.kt

private const val EVENT_AD_REWARD_PROMPT = "ad_reward_prompt"

private const val EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression"

private const val EVENT_LEVEL_FAIL = "level_fail"

private const val EVENT_LEVEL_SUCCESS = "level_success"

private const val EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer"

private const val EVENT_GAME_START = "game_start"

private const val EVENT_GAME_COMPLETE = "game_complete"

private const val PARAM_AD_UNIT_ID = "ad_unit_id"

private const val PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec"

private const val PARAM_HINT_USED = "hint_used"

private const val PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts"

private const val PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers"

Затем добавьте функции расширения , которые помогут вам регистрировать пользовательские события в вашей игре. Обратите внимание, что большинство пользовательских событий включают параметры, поэтому у вас есть больше контекста каждого события. Также обратите внимание, что несколько имен и параметров событий ( FirebaseAnalytics.Event.LEVEL_NAME и FirebaseAnalytics.Event.LEVEL_START ) уже определены в Analytics, поэтому мы собираемся использовать их.

QuizAnalytics.kt

...

fun FirebaseAnalytics.logGameStart() = logEvent(EVENT_GAME_START, null)

fun FirebaseAnalytics.logLevelStart(levelName: String) {
    logEvent(FirebaseAnalytics.Event.LEVEL_START) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logLevelWrongAnswer(levelName: String) {
    logEvent(EVENT_LEVEL_WRONG_ANSWER) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
    }
}

fun FirebaseAnalytics.logAdRewardPrompt(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_PROMPT) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logAdRewardImpression(adUnitId: String) {
    logEvent(EVENT_AD_REWARD_IMPRESSION) {
        param(PARAM_AD_UNIT_ID, adUnitId)
    }
}

fun FirebaseAnalytics.logLevelSuccess(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_SUCCESS) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logLevelFail(
    levelName: String,
    numberOfAttempts: Int,
    elapsedTimeSec: Int,
    hintUsed: Boolean
) {
    logEvent(EVENT_LEVEL_FAIL) {
        param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
        param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
        param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
        param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
    }
}

fun FirebaseAnalytics.logGameComplete(
    numberOfCorrectAnswers: Int
) {
    logEvent(EVENT_GAME_COMPLETE) {
        param(PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers.toLong())
    }
}

Записывать события аналитики в игре

В классе GameViewModel добавьте новое свойство для экземпляра FirebaseAnalytics .

GameViewModel.kt

class GameViewModel(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModel() {
   ...
}

Затем в классе AwesomeDrawingQuizViewModelFactory добавьте новое свойство, как вы это делали ранее в GameViewModel .

AwesomeDrawingQuizViewModelFactory.kt

class AwesomeDrawingQuizViewModelFactory(
    ...
    // TODO: Accept FirebaseAnalytics instance as a parameter (101)
    private val analytics: FirebaseAnalytics,
) : ViewModelProvider.Factory {
    ...
}

Затем в классе AwesomeDrawingQuiz добавьте функцию provideFirebaseAnalytics() и обновите функцию provideViewModelFactory() , чтобы передать экземпляр FirebaseAnalytics в AwesomeDrawingViewModelFactory .

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    fun provideViewModelFactory() = AwesomeDrawingQuizViewModelFactory(
        this,
        provideGameSettings(),
        // TODO: Pass FirebaseAnalytics instance as a parameter (101)
        provideFirebaseAnalytics(),
    )

    // TODO: Provide FirebaseAnalytics instance (101)
    private fun provideFirebaseAnalytics() = Firebase.analytics

    ...

}

Теперь вы готовы реализовать собственные события. Сначала в функции startGame() вызовите logGameStart() чтобы указать, что игра началась.

Поскольку logGameStart() является функцией расширения класса FirebaseAnalytics , вы можете вызывать ее из экземпляра класса FirebaseAnalytics .

GameViewModel.kt

fun startGame() {
    ...

    // TODO: Log game_start event (101)
    analytics.logGameStart()

    ...
}

Затем в функцию checkAnswer() добавьте события level_success и level_wrong_answer .

GameViewModel.kt

fun checkAnswer(userAnswer: String) {
    ...
    if (correct) {
        ...

        // TODO: Log level_success event (101)
        analytics.logLevelSuccess(
            levelName = drawing.word,
            numberOfAttempts = numAttempts,
            elapsedTimeSec = elapsedTimeInSeconds,
            hintUsed = isHintUsed,
        )

        ...
    } else {
        // TODO: Log level_wrong_answer event (101)
        analytics.logLevelWrongAnswer(levelName = drawing.word)

        ...
    }
}

Затем в функции skipLevel() добавьте событие level_fail, чтобы пометить уровень как неудавшийся.

GameViewModel.kt

fun skipLevel() {
   ...

    // TODO: Log level_fail event (101)
    analytics.logLevelFail(
        levelName = drawing.word,
        numberOfAttempts = numAttempts,
        elapsedTimeSec = elapsedTimeInSeconds,
        hintUsed = isHintUsed,
    )

    ...
}

Затем реализуйте функции logAdRewardPrompt() и logAdRewardImpression() чтобы отслеживать поведение пользователя в отношении видеорекламы с вознаграждением.

GameViewModel.kt

fun logAdRewardPrompt(adUnitId: String) {
    // TODO: Log ad_reward_prompt event (101)
    analytics.logAdRewardPrompt(adUnitId)
}

fun logAdRewardImpression(adUnitId: String) {
    // TODO: Log ad_reward_impression event (101)
    analytics.logAdRewardImpression(adUnitId)
}

Наконец, измените функции requestNewDrawing() и finishGame() , чтобы добавить пользовательские события level_start и game_complete.

GameViewModel.kt

private fun requestNewDrawing() {
    ...

    drawingRequestDisposable = drawingDao.getRandomDrawings(seenWords)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe { d ->
            ...

            // TODO: Log level_start event (101)
            analytics.logLevelStart(d.word)

            ...
        }
}

private fun finishGame() {
    // TODO: Log game_complete event (101)
    analytics.logGameComplete(numCorrectAnswers)

    ...
}

8. Отладка событий аналитики

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

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

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

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

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

  1. Откройте окно инструмента «Терминал» в Android Studio ( «Просмотр» > «Окна инструментов» > «Терминал» ).

c8dc1b4f08a224b8.png

  1. Выполните следующую команду (убедитесь, что тестовое устройство Android подключено к вашему компьютеру или эмулятор Android запущен):
adb shell setprop debug.firebase.analytics.app com.codelab.awesomedrawingquiz

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

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

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

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

827059255d09ac00.png

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

475db00d05d03ab8.png

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

9. Включите специальные параметры и показатели.

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

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

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

3d20ee9d7de74e9b.png

  1. Затем выберите вкладку «Пользовательские метрики» и нажмите «Создать специальные метрики» .
  2. Введите имя параметра и единицы измерения для следующих параметров.

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

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

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

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

Число

Стандартный

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

Число

Стандартный

elapsed_time_sec

Число

Секунды

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

Число

Стандартный

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

Поскольку вы добавили в игру несколько событий, вы сможете ответить на вопросы, касающиеся поведения пользователей в игре. Вот несколько полезных сведений, которые можно получить из отчета о событиях 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, это сигнал о том, что вознаграждение (подсказка) недостаточно полезно для этих пользователей. Кроме того, вы теряете возможность увеличить доход от видеорекламы с вознаграждением.

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

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

Всего в каждой игре «Викторины по рисованию» есть 6 уровней. Как только пользователь завершает 6 уровней (независимо от того, прошел ли он каждый уровень или провалил его), запускается событие game_complete с параметром number_of_correct_answers . Параметр number_of_correct_answers указывает количество уровней, на которых пользователь дал правильный ответ.

Нажмите событие game_complete в отчете о событиях. В отчете о событии game_complete найдите карточку number_of_correct_answers . Вы увидите среднее количество параметров события number_of_correct_answers .

d9eeaa019d1bceb4.png

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

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

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

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