1. Введение
Предположим, вам нужно скорректировать значения некоторых параметров в вашем приложении после его публикации в Play Store. Обычно для этого требуется опубликовать новую версию приложения, и пользователи также должны обновить приложение на своих телефонах.
В целом, обновление приложения сработает, если вы хотите внести долговременные изменения в приложение. Однако что, если вы собираетесь часто изменять значения некоторых параметров в приложении? Или, например, если вы хотите провести эксперименты, чтобы найти оптимальную конфигурацию приложения?
В таких случаях обновление приложения не сработает должным образом. Поскольку требуется некоторое время, пока обновление полностью распространится на пользователей. Кроме того, проведение экспериментов на нескольких версиях приложения представляет собой довольно сложную задачу.
Кроме того, как определить, работает ли пользовательский интерфейс приложения так, как задумано? Можно полагаться на комментарии пользователей в консоли Play. Однако они могут быть недостаточно точными для принятия однозначного решения.
Что вы узнаете
- Как создать воронку продаж в Google Analytics для Firebase
- Как использовать Firebase Remote Config
- Как провести A/B-тестирование в Firebase
Что вам понадобится
- Unity 2018.4.4f1 или выше
- Xcode 10 или выше (для сборки целевой платформы для iOS)
- Аккаунт Google
- Для тестирования вам потребуется устройство с Android 5.0+, подключенное через USB-кабель, или эмулятор Android, работающий с AVD (Android Virtual Device) и использующий образ системы, поддерживающий API Play Store/Google.
- Устройство iOS или симулятор под управлением iOS 8.0 или выше.
Как бы вы оценили свой уровень опыта работы с AdMob?
Как бы вы оценили свой уровень опыта работы с Firebase?
2. Настройка среды разработки.
Скачать код
Нажмите на следующую кнопку, чтобы загрузить весь код для этого практического занятия:
Распакуйте загруженный zip-файл. В результате будет распакована корневая папка с именем admob-firebase-codelabs-unity-master .
...или клонируйте репозиторий GitHub из командной строки.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Репозиторий содержит четыре папки следующего вида:
101-base — Начальный код, который вы будете создавать в этом практическом занятии.
101-complete_and_102-base — Завершенный код для этого практического занятия и начальный код для практического занятия 102.
102-complete — Завершенный код для лабораторной работы 102.
Подготовьте необходимые файлы.
В проекте Awesome Drawing Quiz используется несколько программ с открытым исходным кодом, необходимых для компиляции и запуска проекта.
Откройте терминал и перейдите в корневой каталог репозитория. Затем запустите в терминале команду ./gradlew :prepareThirdPartyFiles ( gradlew.bat :prepareThirdPartyFiles в Windows), чтобы скопировать необходимые файлы в проект.
Импортируйте стартовое приложение
Запустите Unity, выберите «Открыть» на экране приветствия. Затем выберите каталог 101-complete_and_102-base из загруженного вами кода.
Теперь проект должен быть открыт в Unity.
Добавить плагин Google Mobile Ads в Unity
Для показа рекламы AdMob в приложении Unity необходимо добавить плагин Google Mobile Ads Unity в проект.
- Загрузите пакет плагина Google Mobile Ads Unity версии 3.18.1 . (Обратите внимание, что данный Codelab может быть несовместим с другими версиями плагина).
- В проекте Unity «Awesome Drawing Quiz» перейдите в раздел Assets > Import Package > Custom Package .
- Импортируйте файл GoogleMobileAds.unitypackage в загруженный вами проект.
Также необходимо указать идентификатор приложения AdMob. В редакторе Unity выберите в меню Assets > Google Mobile Ads > Settings .

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

Добавьте конфигурационные файлы Firebase в проект Unity.
- На главном экране проекта Awesome Drawing Quiz нажмите значок «Настройки».

- На вкладке «Общие» выберите каждое приложение для Android и iOS, чтобы загрузить файл google-service.json (для Android) и файл GoogleService-Info.plist (для iOS).
- Переместите оба конфигурационных файла в
Папка Assets в проекте Unity.

Добавить SDK Firebase Analytics
- Загрузите Firebase Unity SDK 5.5.0 и распакуйте его в удобное место. (Пропустите этот шаг, если вы уже загрузили SDK).
- Откройте проект Awesome Drawing Quiz в Unity, перейдите в Assets > Import Package > Custom Package .
- Из распакованного SDK импортируйте Firebase Analytics SDK (
dotnet4/FirebaseAnalytics.unitypackage). - В окне «Импорт пакета Unity» нажмите «Импорт» .
3. Откройте проект Firebase из консоли.
Прежде чем перейти к следующему шагу, откройте из консоли Firebase проект, который вы создали на шаге «Настройка проекта Firebase» в практическом руководстве AdMob+Firebase 101 .

4. Создайте воронку событий приложения.
Возможно, вы добавили несколько событий приложения для отслеживания активности пользователей внутри приложения. Прочитав отчет по каждому событию, вы можете получить подробную информацию, связанную с ним, такую как общее количество, среднее количество на пользователя, демографические данные и т. д.
Однако что, если вы хотите увидеть процент завершения серии событий, а не фокусироваться на конкретном событии? В Google Analytics для Firebase вы можете использовать воронку для визуализации и оптимизации процента завершения серии событий приложения.
Создайте воронку
Для создания воронки продаж:
- Перейдите в консоль Firebase и выберите созданный ранее проект Awesome Drawing Quiz .
- Нажмите на « Воронки» .
- Нажмите «НОВАЯ ВОРОНКА» .
- Введите название и описание воронки.
- Выберите первые два события, которые вы хотите использовать в качестве шагов воронки.
- Для каждого дополнительного шага нажмите кнопку «ДОБАВИТЬ ЕЩЕ ОДНО СОБЫТИЕ» и выберите нужное событие.
- Нажмите СОЗДАТЬ .
Выполнив описанные выше шаги, создайте следующие воронки продаж:
#1 Название воронки: Уровень успешности События: level_start , level_success 
#2 Название воронки: Показатель завершения рекламы с вознаграждением События: ad_reward_prompt , ad_reward_impression , ad_reward 
#3 Название воронки: Показатель завершения игры События: game_start , game_complete 
Просмотреть анализ воронки
После создания нескольких воронок продаж вы можете получить к ним доступ через меню «Воронки» в консоли Firebase. Щелкнув по названию воронки в списке, вы сможете увидеть подробный анализ каждой воронки.

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

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

Согласно метрикам, представленным на скриншоте выше, за этот период было совершено 116 попыток (спровоцировавших событие level_start) и 57 прохождений (спровоцировавших событие level_success).
Поскольку показатель завершения заданий на основе событий (49,1%) немного выше, чем показатель, основанный на действиях пользователя (46,2%), можно сказать, что есть несколько человек, которые показывают лучшие результаты, чем остальные.
5. Интегрируйте функцию удаленной настройки в приложение.
Поскольку вы можете получить некоторую информацию о своем приложении на основе событий приложения и воронки продаж, вам может потребоваться его оптимизация. Обычно это включает в себя тонкую настройку значений параметров в приложении. Чтобы изменить значения этих параметров, вам потребуется обновить приложение, чтобы изменения могли быть применены к пользователям.
Использование функции Remote Config в Firebase позволяет изменять эти значения без обновления приложения, что означает возможность изменения поведения приложения без необходимости заставлять пользователей загружать обновление.
В этом практическом занятии вы узнаете, как регулировать размер вознаграждения (количество букв, которые будут показаны после просмотра рекламного видеоролика с вознаграждением) без обновления приложения, используя функцию удаленной конфигурации.
Добавить SDK Firebase Remote Config
- Загрузите Firebase Unity SDK 5.5.0 и распакуйте его в удобное место.
- Откройте проект Awesome Drawing Quiz в Unity, перейдите в Assets > Import Package > Custom Package .
- Из распакованного SDK импортируйте Remote Config SDK (
dotnet4/FirebaseRemoteConfig.unitypackage). - В окне «Импорт пакета Unity» нажмите «Импорт» .
Импортируйте Firebase.RemoteConfig
Измените файл Main.cs таким образом, чтобы можно было использовать тип из Firebase.RemoteConfig без необходимости указывать полное квалифицированное имя.
Scenes/Main.cs
...
using AwesomeDrawingQuiz.Game;
// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;
namespace AwesomeDrawingQuiz.Scene {
...
}
Инициализация и получение значений удаленной конфигурации
Измените метод InitAndFetchRemoteConfig() в файле Main.cs , чтобы инициализировать экземпляр Remote Config следующим образом. Обратите внимание, что GameSettings.KEY_REWARD_AMOUNT содержит имя параметра в Remote Config. (Вы объявите это поле позже в этом практическом занятии).
Scenes/Main.cs
private Task InitAndFetchRemoteConfig() {
// TODO: Initialize and Fetch values from the Remote Config (102)
Dictionary<string, object> defaults = new Dictionary<string, object>();
defaults.Add(GameSettings.KEY_REWARD_AMOUNT, 1);
FirebaseRemoteConfig.SetDefaults(defaults);
if (Debug.isDebugBuild) {
ConfigSettings config = new ConfigSettings();
config.IsDeveloperMode = true;
FirebaseRemoteConfig.Settings = config;
return FirebaseRemoteConfig.FetchAsync(System.TimeSpan.Zero);
} else {
return FirebaseRemoteConfig.FetchAsync();
}
}
Вы увидите, что экземпляр FirebaseRemoteConfig настроен на получение последних значений с сервера в режиме отладки, что помогает в процессе разработки. ( IsDeveloperMode = true и FetchAsync(System.TimeSpan.Zero) )
Активировать полученные значения удаленной конфигурации
После успешного получения значений удаленной конфигурации необходимо активировать эти значения, чтобы сделать их доступными в приложении. Измените метод ActivateRemoteConfigValues() следующим образом.
Scenes/Main.cs
private void ActivateRemoteConfigValues() {
// TODO: Activate fetched Remote Config values (102)
FirebaseRemoteConfig.ActivateFetched();
}
Измените метод Start()
Чтобы приложение автоматически получало и активировало значение Remote Config при запуске, измените метод Start() в файле Main.cs следующим образом.
Scenes/Main.cs
void Start () {
...
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
...
}).ContinueWith(task => {
// TODO: Call InitAndFetchRemoteConfig() (102)
InitAndFetchRemoteConfig();
}).ContinueWith(task => {
// TODO: Call ActivateRemoteConfigValues() (102)
ActivateRemoteConfigValues();
// Enable 'Start a game' button
UnityMainThreadDispatcher.Instance()
.Enqueue(() => buttonStartGame.interactable = true);
});
#else
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
// TODO: Call InitAndFetchRemoteConfig() (102)
InitAndFetchRemoteConfig().ContinueWith(task => {
// TODO: Call ActivateRemoteConfigValues() (102)
ActivateRemoteConfigValues();
});
#endif
}
Получите сумму вознаграждения из удаленной конфигурации.
Измените класс GameSettings таким образом, чтобы он получал сумму вознаграждения из удаленной конфигурации.
Game/GameSettings.cs
// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;
namespace AwesomeDrawingQuiz.Game {
public class GameSettings {
...
// TODO: Apply reward amount from the Remote Config (102)
public const string KEY_REWARD_AMOUNT = "reward_amount";
public static GameSettings Instance {
get {
return instance;
}
}
...
public int RewardAmount {
get {
// TODO: Apply reward amount from the Remote Config (102)
return (int) FirebaseRemoteConfig.GetValue(KEY_REWARD_AMOUNT).LongValue;
}
private set { }
}
}
}
Создайте параметр удаленной конфигурации из консоли.
Далее вам нужно будет создать новый параметр удаленной конфигурации для суммы вознаграждения, чтобы вы могли корректировать его значение на лету.
Чтобы создать новый параметр, перейдите в консоль Firebase , затем выберите созданный ранее проект Awesome Drawing Quiz . Нажмите кнопку Remote Config -> ADD YOUR FIRST PARAMETER .

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

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

6. Измените поведение приложения с помощью удаленной конфигурации.
Размер вознаграждения в викторине Awesome Drawing Quiz теперь можно настроить в консоли Firebase без необходимости обновления кода приложения.
В этом разделе вы измените размер вознаграждения с 1 на 2, чтобы приложение отображало еще двух персонажей в качестве подсказки после просмотра рекламы с вознаграждением.
Обновите значение по умолчанию параметра reward_amount.
Перейдите в консоль Firebase , затем выберите созданный ранее проект Awesome Drawing Quiz . Нажмите «Remote Config» и выберите reward_amount из списка. Затем измените значение по умолчанию на 2 и нажмите кнопку «Update» .

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

Проверьте изменение поведения приложения.
Чтобы подтвердить изменение поведения приложения, запустите проект снова. После просмотра рекламы с вознаграждением вы заметите, что приложение теперь отображает две буквы в качестве вознаграждения, как мы настроили в консоли удаленной конфигурации.
Перед просмотром рекламы с вознаграждением | В качестве награды были обнаружены две дополнительные буквы. |
7. Создайте эксперимент для оптимизации размера вознаграждения.
Теперь вы можете изменить размер вознаграждения без необходимости выпускать обновление приложения. Однако как определить, что измененная сумма подходит для приложения?
С помощью Firebase A/B-тестирования вы можете проводить эксперименты для оптимизации общего пользовательского опыта приложения без необходимости обновления приложения или создания отдельного инструмента для запуска и отслеживания результатов каждого эксперимента.
Разработайте эксперимент.
Перед началом нового эксперимента необходимо четко определить его цель. Перед созданием нового эксперимента обязательно ознакомьтесь со следующим контрольным списком.
- Что: Что вы хотите оптимизировать? (например, сложность игры, время показа/видимость рекламы и т. д.)
- Почему: Какова ваша бизнес-цель при проведении эксперимента? (например, максимизировать доход от рекламы, повысить удержание клиентов и т. д.)
- Кто: Кто будет участвовать в эксперименте? (например, все пользователи, определенная группа пользователей и т. д.)
В этом практическом задании вы проведете эксперимент по оптимизации размера вознаграждения, чтобы максимизировать ежедневную вовлеченность пользователей в викторину «Потрясающие рисунки» .
Создайте эксперимент
Откройте проект Awesome Drawing Quiz из консоли Firebase . Выберите пункт меню A/B-тестирование , затем нажмите кнопку «Создать эксперимент» .
Выберите « Удалённая конфигурация» , чтобы создать эксперимент с удалённой конфигурацией.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9. Всё готово!
Вы завершили практическое занятие по теме AdMob+Firebase 102 Unity. Вы можете найти готовый код для этого занятия на [ссылка].
102-полная папка.

