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

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

О практической работе

subjectПоследнее обновление: сент. 2, 2022
account_circleАвторы: Taeho Kim

1. Введение

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

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

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

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

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

  • Как создать воронку в Google Analytics для Firebase
  • Как использовать удаленную конфигурацию Firebase
  • Как запустить A/B-тестирование Firebase

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавьте плагин Google Mobile Ads Unity

Чтобы показывать рекламу AdMob в приложении Unity, вам необходимо добавить в проект плагин Google Mobile Ads Unity.

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

Вам также необходимо установить идентификатор приложения AdMob. В редакторе Unity выберите в меню «Ресурсы» > «Google Mobile Ads» > «Настройки» .

44fc84fe88235c1f.png

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

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

a6ad7402d4daf330.png

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

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

704aa8e97df63c4e.png

Добавить Firebase Analytics SDK

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

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

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

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 в приложение

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

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

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

Добавить SDK удаленной конфигурации Firebase

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

Импортировать Firebase.RemoteConfig

Измените Main.cs, чтобы вы могли использовать тип из Firebase.RemoteConfig без необходимости использования полного имени.

Сцены/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 содержит имя параметра в удаленной конфигурации. (Вы скоро объявите это поле в этой Codelab)

Сцены/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) )

Активировать полученные значения удаленной конфигурации

Когда вы успешно получили значения Remote Config, вам следует активировать эти значения, чтобы сделать их доступными в приложении. Измените метод ActivateRemoteConfigValues() следующим образом.

Сцены/Main.cs

private void ActivateRemoteConfigValues() {
   
// TODO: Activate fetched Remote Config values (102)
   
FirebaseRemoteConfig.ActivateFetched();
}

Измените метод Start().

Чтобы приложение извлекало и активировало значение Remote Config при запуске приложения, измените метод Start() в файле Main.cs следующим образом.

Сцены/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
}

Получите сумму вознаграждения из Remote Config.

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

Игра/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 { }
       
}
   
}
}

Создайте параметр Remote Config из консоли.

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

Чтобы создать новый параметр, перейдите в консоль Firebase , затем выберите проект Awesome Drawing Quiz , который вы создали ранее. Нажмите кнопку «Удаленная настройка» -> «ДОБАВИТЬ ПЕРВЫЙ ПАРАМЕТР» .

7f52617141c53726.png

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

cbc771fd1685b29c.png

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

d6a6aa4a60e06ee9.png

6. Измените поведение приложения с помощью Remote Config.

Сумму вознаграждения в викторине «Потрясающее рисование» теперь можно настроить на консоли Firebase без необходимости обновлять код приложения.

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

Обновите значение по умолчанию параметра вознаграждения_количество.

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

9a9bd8a26a39bfe3.png

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

d6a6aa4a60e06ee9.png

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

Чтобы подтвердить изменение поведения приложения, запустите проект еще раз. Закончив просмотр рекламы с вознаграждением, вы заметите, что приложение теперь показывает две буквы в качестве награды, как мы настроили в консоли Remote Config.

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

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

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

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

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

Спланируйте эксперимент

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

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

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

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

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

Выберите Remote Config , чтобы создать эксперимент Remote Config.

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. Все готово!

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