AdMob+Firebase 102 Android: точная настройка поведения приложения без его обновления

1. Введение

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

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

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

Кроме того, как определить, работает ли пользовательский интерфейс приложения так, как задумано? Можно полагаться на комментарии пользователей в консоли Play. Однако они могут быть недостаточно точными для принятия однозначного решения.

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

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

  • Как создать воронку продаж в Google Analytics для Firebase
  • Как использовать Firebase Remote Config
  • Как провести A/B-тестирование в 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-master .

...или клонируйте репозиторий 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-complete_and_102-base из загруженного вами кода.

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

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

  1. На главном экране проекта Awesome Drawing Quiz нажмите значок «Настройки». 9bacb5ada7cbaaf6.png
  2. На вкладке «Общие» выберите приложение Android, чтобы загрузить файл google-service.json .
  3. Переместите файл конфигурации в android_studio_folder.png каталог приложения в вашем проекте. 797cde1881a38fdf.png

3. Откройте проект Firebase из консоли.

Прежде чем перейти к следующему шагу, откройте из консоли Firebase проект, который вы создали на шаге «Настройка проекта Firebase» в практическом руководстве AdMob+Firebase 101 .

e0a028059c9e00cb.png

4. Создайте воронку событий приложения.

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

Однако что, если вы хотите увидеть процент завершения серии событий, а не фокусироваться на конкретном событии? В Google Analytics для Firebase вы можете использовать воронку для визуализации и оптимизации процента завершения серии событий приложения.

Создайте воронку

Для создания воронки продаж:

  1. Перейдите в консоль Firebase и выберите созданный ранее проект Awesome Drawing Quiz .
  2. Нажмите на « Воронки» .
  3. Нажмите «НОВАЯ ВОРОНКА» .
  4. Введите название и описание воронки.
  5. Выберите первые два события, которые вы хотите использовать в качестве шагов воронки.
  6. Для каждого дополнительного шага нажмите кнопку «ДОБАВИТЬ ЕЩЕ ОДНО СОБЫТИЕ» и выберите нужное событие.
  7. Нажмите СОЗДАТЬ .

Выполнив описанные выше шаги, создайте следующие воронки продаж:

#1 Название воронки: Уровень успешности События: level_start , level_success d3bc78ef61a261d7.png

#2 Название воронки: Показатель завершения рекламы с вознаграждением События: ad_reward_prompt , ad_reward_impression , ad_reward 45c9542dfa663014.png

#3 Название воронки: Показатель завершения игры События: game_start , game_complete dab25e8501746d5f.png

Просмотреть анализ воронки

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

620c0e84587c8ad4.png

Например, нажмите на кнопку «Уровень успешности» . Отобразятся следующие подробные данные воронки:

c889f9b6ece15847.png

На скриншоте выше вы можете увидеть процент пользователей, прошедших уровень (сработавшее событие level_success ) после начала уровня (сработавшее событие level_start ). Здесь видно, что уровень прошли 46,2% пользователей.

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

d044fb7b07e6e0d9.png

Согласно метрикам, представленным на скриншоте выше, за этот период было совершено 116 попыток (спровоцировавших событие level_start) и 57 прохождений (спровоцировавших событие level_success).

Поскольку показатель завершения заданий на основе событий (49,1%) немного выше, чем показатель, основанный на действиях пользователя (46,2%), можно сказать, что есть несколько человек, которые показывают лучшие результаты, чем остальные.

5. Интегрируйте функцию удаленной настройки в приложение.

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

Использование функции Remote Config в Firebase позволяет изменять эти значения без обновления приложения, что означает возможность изменения поведения приложения без необходимости заставлять пользователей загружать обновление.

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

Добавьте Remote Config в зависимости приложения.

Начнём с добавления Firebase Remote Config в зависимости приложения.

app/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Add Firebase Remote Config dependency (102)
    implementation 'com.google.firebase:firebase-config-ktx'

    ...
}

...

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

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

Установите значение по умолчанию для параметра «Удалённая конфигурация».

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

Создайте файл remote_config_defaults.xml в папке res/xml . Затем установите значение по умолчанию для суммы вознаграждения ( reward_amount) следующим образом.

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
    <entry>
        <key>reward_amount</key>
        <value>1</value>
    </entry>
</defaultsMap>

Обратите внимание, что reward_amount — это имя параметра в удаленной конфигурации.

Получите сумму вознаграждения из удаленной конфигурации.

Измените файл AwesomeDrawingQuiz.kt таким образом, чтобы класс GameSettings содержал ссылку на экземпляр RemoteConfig .

Обратите внимание, что экземпляр RemoteConfig настроен на получение последних значений с сервера в режиме отладки для облегчения процесса разработки. (Установите минимальный интервал получения данных равным нулю секунд, вызвав функцию fetch(0L) )

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    // COMPLETE: Provide FirebaseRemoteConfig instance (102)
    private fun provideGameSettings() = GameSettings(provideRemoteConfig())

    // COMPLETE: Add a function that provides a FirebaseRemoteConfig instance (102)
    private fun provideRemoteConfig(): FirebaseRemoteConfig {
        val rc = Firebase.remoteConfig.apply {
            setDefaultsAsync(R.xml.remote_config_defaults)
        }
        val fetchTask = if (BuildConfig.DEBUG) rc.fetch(0L) else rc.fetch()
        fetchTask.addOnCompleteListener {
            if (it.isSuccessful) {
                Log.d("AwesomeDrawingQuiz", "Remote config value fetched")
                rc.activate()
            }
        }
        return rc
    }
}

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

GameSettings.kt

// TODO: Add FirebaseRemoteConfig as a class member
class GameSettings(private val rc: FirebaseRemoteConfig) {

  ...

  // TODO: Apply reward amount from the Remote Config (102)
  val rewardAmount: Int
    get() = rc.getLong(KEY_REWARD_AMOUNT).toInt()

  companion object {
    ...

    // TODO: Add a key for 'reward_amount' Remote Config parameter (102)
    private const val KEY_REWARD_AMOUNT = "reward_amount"
  }
}

Создайте параметр удаленной конфигурации из консоли.

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

Чтобы создать новый параметр, перейдите в консоль Firebase , затем выберите созданный ранее проект Awesome Drawing Quiz . Нажмите кнопку Remote Config -> ADD YOUR FIRST PARAMETER .

7f52617141c53726.png

Назовите параметр reward_amount и установите для него значение по умолчанию 1 Затем нажмите кнопку «Добавить параметр» .

cbc771fd1685b29c.png

Нажмите кнопку «Опубликовать изменения» , чтобы изменения стали доступны пользователям.

d6a6aa4a60e06ee9.png

6. Измените поведение приложения с помощью удаленной конфигурации.

Размер вознаграждения в викторине Awesome Drawing Quiz теперь можно настроить в консоли Firebase без необходимости обновления кода приложения.

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

Обновите значение по умолчанию параметра reward_amount.

Перейдите в консоль Firebase , затем выберите созданный ранее проект Awesome Drawing Quiz . Нажмите «Remote Config» и выберите reward_amount из списка. Затем измените значение по умолчанию на 2 и нажмите кнопку «Update» .

9a9bd8a26a39bfe3.png

Нажмите кнопку «Опубликовать изменения» , чтобы изменения стали доступны пользователям.

d6a6aa4a60e06ee9.png

Проверьте изменение поведения приложения.

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

Перед просмотром рекламы с вознаграждением

В качестве награды были обнаружены две дополнительные буквы.

7. Создайте эксперимент для оптимизации размера вознаграждения.

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

С помощью Firebase A/B-тестирования вы можете проводить эксперименты для оптимизации общего пользовательского опыта приложения без необходимости обновления приложения или создания отдельного инструмента для запуска и отслеживания результатов каждого эксперимента.

Разработайте эксперимент.

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

  • Что: Что вы хотите оптимизировать? (например, сложность игры, время показа/видимость рекламы и т. д.)
  • Почему: Какова ваша бизнес-цель при проведении эксперимента? (например, максимизировать доход от рекламы, повысить удержание клиентов и т. д.)
  • Кто: Кто будет участвовать в эксперименте? (например, все пользователи, определенная группа пользователей и т. д.)

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

Создайте эксперимент

Откройте проект Awesome Drawing Quiz из консоли Firebase . Выберите пункт меню A/B-тестирование , затем нажмите кнопку «Создать эксперимент» .

Выберите « Удалённая конфигурация» , чтобы создать эксперимент с удалённой конфигурацией.

f38a85328ab54e7e.png

Назовите эксперимент «Размер вознаграждения», как показано на следующем скриншоте.

15d552adb61c0b08.png

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

61b316741a63050f.png

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

694641b57d90ff65.png

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

10ed7f5b06858519.png

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

После нажатия кнопки «Обзор» вы увидите краткий обзор эксперимента, представленный ниже.

ae6477ce79f6265d.png

Проведите эксперимент

Нажмите кнопку « Начать эксперимент» , чтобы запустить эксперимент. Обратите внимание, что после запуска эксперимента изменить его конфигурацию будет невозможно.

7131bf9b4fa74fa5.png

8. Проведение эксперимента.

Проследите за ходом эксперимента.

Вы можете отслеживать ход эксперимента в меню A/B-тестирования в консоли Firebase, которое будет выглядеть как на следующем скриншоте. Обратите внимание, что в карточке также отображается количество пользователей, участвовавших в эксперименте за последние 30 минут.

8a7009bdd8871d95.png

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

a4e7ca3e3f4711cd.png

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

e2d00fc27c053fd3.png

В таблице под разделом «Обзор улучшений» вы можете ознакомиться с подробными данными целевых показателей эксперимента, а также с дополнительными показателями, отслеживаемыми в ходе эксперимента. На следующем снимке экрана показан пример раздела с подробными данными о показателях.

c3859d642f85cc52.png

Развернуть лидерскую функцию для всех пользователей

После того, как эксперимент продлится достаточно долго и выявите лидера или выигрышный вариант, вы можете запустить его для 100% пользователей. Как только A/B-тестирование выявит явного лидера, оно побудит вас запустить лидирующий вариант для всех пользователей.

86cb6a6c07516634.png

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

На экране с подробными сведениями об эксперименте нажмите на контекстное меню ( 73afe611adf58774.png ), а затем нажмите «Развернуть вариант» .

374e1c72be1d0656.png

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

e176f6e6a72c754.png

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

d65d545620ce93f6.png

9. Всё готово!

Вы завершили практическое занятие по теме AdMob+Firebase 102 для Android. Полный код для этого занятия можно найти здесь: android_studio_folder.png 102-полная папка.