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

1. Введение

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

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

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

Что вы построите

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

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

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

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

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

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

  • Android Studio версии 4.1+
  • Аккаунт Google
  • Для тестирования вам потребуется устройство с Android 5.0+, подключенное через USB-кабель, или эмулятор Android, работающий с AVD (Android Virtual Device) и использующий образ системы, поддерживающий 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.

Импортируйте стартовое приложение

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

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

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

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

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

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

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

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

7672f41ec611101b.png

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

6d067814a2c38264.png

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

strings.xml

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

GameActivity.kt

// 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. Введите имя пакета codelab: com.codelab.awesomedrawingquiz
  3. Придумайте псевдоним для своего приложения: Awesome Drawing Quiz
  4. Оставьте поле SHA-1 пустым, поскольку SHA-1 не требуется для этого проекта.
  5. Выберите «Зарегистрировать приложение» , чтобы зарегистрировать ваше приложение.

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

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

32419a0fa25a1405.png

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

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

dependencies.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 следующую строку:

app/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 в зависимости приложения.

app/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».

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

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

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

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

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

С помощью карточки «Доходы» вы можете получить целостное представление обо всех возможных источниках дохода в одном месте. Поддерживаемые источники дохода следующие:

  • 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. Добавьте события приложения.

Для более глубокого понимания пути пользователя в игре 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: прошел уровень без подсказки)

игра_завершено

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

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

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

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

Сначала создайте новый файл 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. Отладка аналитических событий

В консоли Firebase можно использовать DebugView для проверки корректности регистрации событий. 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.

Отладка аналитических событий с помощью DebugView

После включения режима отладки на тестовом устройстве перейдите к своему проекту в консоли Firebase и выберите в меню «Аналитика» > «Отладка» (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. Введите название параметра и единицы измерения для следующих параметров.

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

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

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

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

Число

Стандарт

hint_used

Число

Стандарт

затраченное_время_сек

Число

Секунды

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

Число

Стандарт

10. Получите ценные сведения из отчета о мероприятии.

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

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

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

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

25da426bbc0c612c.png

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

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

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

В викторине Awesome Drawing Quiz пользователи могут отправлять ответы на каждый уровень неограниченное количество раз.

Поскольку вы включили отображение параметров для параметра 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 уровней. После того, как пользователь пройдет 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. Полный код для этого занятия можно найти здесь: android_studio_folder.png Папка 101-complete_and_102-base .

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