1. Введение
В этом практическом задании вы реализуете функцию открытия рекламы в приложении AdMob в Unity.
Что вы построите
В этом практическом занятии вы узнаете, как реализовать показ рекламы AdMob в приложении Unity с помощью плагина Google Mobile Ads для Unity.

Если у вас возникнут какие-либо проблемы (ошибки в коде, грамматические неточности, неясные формулировки и т. д.) во время выполнения этого практического задания, сообщите о них, используя ссылку «Сообщить об ошибке» в левом нижнем углу задания.
Что вы узнаете
- Как настроить плагин Google Mobile Ads Unity
- Как реализовать всплывающую рекламу в приложении Unity
Что вам понадобится
- Unity 2018.4 или более поздняя версия
- Xcode 12 или более поздней версии и CocoaPods (для развертывания на iOS)
Как бы вы оценили свой уровень опыта работы с AdMob?
2. Настройка среды разработки.
Скачать код
После загрузки ZIP-файла распакуйте его содержимое. У вас появится папка с именем admob-appopen-unity-main .
В качестве альтернативы вы можете клонировать репозиторий GitHub из командной строки:
$ git clone https://github.com/googlecodelabs/admob-appopen-unity
В репозитории находятся две папки:
Задание: Начальный код, который вы будете создавать в этом практическом занятии.
Завершено: Код для данной практической работы завершен.
3. Настройте приложение AdMob и рекламные блоки.
Поскольку Unity — это многоплатформенный SDK, вам необходимо добавить приложение и рекламные блоки как для Android, так и для iOS в AdMob.
Настройка для Android
Для настройки под Android необходимо добавить приложение Android и создать рекламные блоки.
Добавить приложение для Android
- В консоли AdMob нажмите кнопку «ДОБАВИТЬ ПРИЛОЖЕНИЕ» в меню «Приложения» .
- Выберите Android в качестве платформы. Когда появится вопрос «Указано ли приложение в поддерживаемом магазине приложений?» , нажмите «НЕТ» .
- В поле «Название приложения» введите
AdMob app open ad. - Включение пользовательских метрик не является обязательным для выполнения этого практического задания. Однако мы рекомендуем это сделать, поскольку это позволит вам более детально понять поведение пользователей. Нажмите ДОБАВИТЬ , чтобы завершить процесс.
Создайте рекламный блок
- Выберите приложение AdMob (Android) и откройте его в меню « Приложения» в консоли AdMob .
- Нажмите на меню «Рекламные блоки» .
|
|
Обычно для показа нового рекламного блока требуется несколько часов.
Если вы хотите немедленно проверить работу рекламы, используйте идентификаторы тестового приложения и рекламного блока, указанные в таблицах идентификаторов приложений/рекламных блоков для Android и iOS.
Настройка для iOS
Для настройки под iOS необходимо добавить iOS-приложение и создать рекламные блоки.
Добавить приложение для iOS
- В консоли AdMob нажмите кнопку «ДОБАВИТЬ ПРИЛОЖЕНИЕ» в меню «Приложения» .
- Выберите iOS в качестве платформы. Когда появится вопрос «Указано ли приложение в поддерживаемом магазине приложений?» , нажмите «НЕТ» .
- В поле «Название приложения» введите
AdMob app open ad. - Включение пользовательских метрик не является обязательным для выполнения этого практического задания. Однако мы рекомендуем это сделать, поскольку это позволит вам более детально понять поведение пользователей. Нажмите ДОБАВИТЬ , чтобы завершить процесс.
Создайте рекламный блок
- В консоли AdMob выберите приложение AdMob inline ads (iOS) в меню « Приложения ».
- Нажмите на меню «Рекламные блоки» .
|
|
Обычно для показа нового рекламного блока требуется несколько часов.
Если вы хотите немедленно проверить работу рекламы, используйте идентификаторы тестового приложения и рекламного блока, указанные в следующей таблице.
Дополнительно: воспользуйтесь тестовым приложением AdMob и рекламными блоками.
Если вы хотите следовать инструкциям из практического руководства, вместо того чтобы создавать новое приложение и рекламные блоки самостоятельно, вы можете использовать идентификаторы тестового приложения AdMob и идентификаторы рекламных блоков, указанные в следующих таблицах.
Идентификатор приложения Android/идентификатор рекламного блока
Элемент | Идентификатор приложения/идентификатор рекламного блока |
Идентификатор приложения AdMob | |
Идентификатор рекламного блока | |
Идентификатор приложения iOS/идентификатор рекламного блока
Элемент | Идентификатор приложения/идентификатор рекламного блока |
Идентификатор приложения AdMob | |
Идентификатор рекламного блока | |
Для получения дополнительной информации о тестовой рекламе см. документацию для разработчиков по тестовой рекламе для Android и тестовой рекламе для iOS .
4. Добавьте плагин Google Mobile Ads Unity.
Интеграция плагина Google Mobile Ads Unity — это первый шаг к показу рекламы AdMob и получению дохода.
Скачайте плагин Mobile Ads Unity.
Плагин Google Mobile Ads для Unity позволяет разработчикам Unity легко показывать мобильную рекламу Google в приложениях для Android и iOS. Плагин предоставляет интерфейс C# для запроса рекламы, который используется скриптами C# в вашем проекте Unity.
Воспользуйтесь ссылкой ниже, чтобы загрузить пакет Unity для этого плагина.
Откройте стартовый проект
- Запустите Unity Hub.
- На вкладке «Проекты» нажмите кнопку «ДОБАВИТЬ» .
- Перейдите в папку, куда вы распаковали загруженный код на этапе настройки среды разработки.
- Откройте папку "Старт" .
- В списке проектов вы увидите стартовый проект. Щёлкните по проекту, чтобы открыть его в редакторе Unity.
Импортируйте плагин Mobile Ads Unity.
- В редакторе Unity выберите в меню Assets > Import Package > Custom Package .
- Выберите файл
GoogleMobileAds-{VERSION}.unitypackageкоторый вы скачали на предыдущем шаге. - Убедитесь, что все файлы выбраны, и нажмите «Импорт» .
Укажите идентификатор вашего приложения AdMob.
- В редакторе Unity выберите в меню Assets > Google Mobile Ads > Settings .
- Введите идентификаторы вашего приложения AdMob для Android и iOS в каждое поле. Если вы хотите следовать инструкциям из руководства, а не создавать новое приложение и рекламные блоки самостоятельно, введите идентификатор тестового приложения AdMob следующим образом.

5. Создайте вспомогательный класс.
Создайте новый класс с именем AppOpenAdManager в папке Scripts . Этот класс управляет переменной экземпляра для отслеживания загруженного объявления и идентификатора рекламного блока для каждой платформы.
AppOpenAdManager.cs
using System;
using GoogleMobileAds.Api;
using UnityEngine;
public class AppOpenAdManager
{
#if UNITY_ANDROID
// Test ad unit ID: ca-app-pub-3940256099942544/3419835294
private const string AD_UNIT_ID = "<YOUR_ANDROID_APPOPEN_AD_UNIT_ID>";
#elif UNITY_IOS
// Test ad unit ID: ca-app-pub-3940256099942544/5662855259
private const string AD_UNIT_ID = "<YOUR_IOS_APPOPEN_AD_UNIT_ID>";
#else
private const string AD_UNIT_ID = "unexpected_platform";
#endif
private static AppOpenAdManager instance;
private AppOpenAd ad;
private bool isShowingAd = false;
public static AppOpenAdManager Instance
{
get
{
if (instance == null)
{
instance = new AppOpenAdManager();
}
return instance;
}
}
private bool IsAdAvailable
{
get
{
return ad != null;
}
}
public void LoadAd()
{
// TODO: Load an app open ad.
}
}
Загрузить рекламу
Загрузка рекламы осуществляется с помощью статического метода AppOpenAd.LoadAd() . Методу загрузки требуется идентификатор рекламного блока, режим ScreenOrientation , объект AdRequest и обработчик завершения, который вызывается при успешной или неудачной загрузке рекламы.
Загруженный объект AppOpenAd передается в качестве параметра в обработчик завершения. Реализуйте метод LoadAd() следующим образом.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void LoadAd()
{
AdRequest request = new AdRequest.Builder().Build();
// Load an app open ad for portrait orientation
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
// Handle the error.
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
// App open ad is loaded.
ad = appOpenAd;
}));
}
}
Показать рекламу
Перед показом рекламы зарегистрируйте каждый обработчик событий, чтобы он мог отслеживать каждое событие, связанное с рекламой.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
public void ShowAdIfAvailable()
{
if (!IsAdAvailable || isShowingAd)
{
return;
}
ad.OnAdDidDismissFullScreenContent += HandleAdDidDismissFullScreenContent;
ad.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresentFullScreenContent;
ad.OnAdDidPresentFullScreenContent += HandleAdDidPresentFullScreenContent;
ad.OnAdDidRecordImpression += HandleAdDidRecordImpression;
ad.OnPaidEvent += HandlePaidEvent;
ad.Show();
}
private void HandleAdDidDismissFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Closed app open ad");
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
isShowingAd = false;
LoadAd();
}
private void HandleAdFailedToPresentFullScreenContent(object sender, AdErrorEventArgs args)
{
Debug.LogFormat("Failed to present the ad (reason: {0})", args.AdError.GetMessage());
// Set the ad to null to indicate that AppOpenAdManager no longer has another ad to show.
ad = null;
LoadAd();
}
private void HandleAdDidPresentFullScreenContent(object sender, EventArgs args)
{
Debug.Log("Displayed app open ad");
isShowingAd = true;
}
private void HandleAdDidRecordImpression(object sender, EventArgs args)
{
Debug.Log("Recorded ad impression");
}
private void HandlePaidEvent(object sender, AdValueEventArgs args)
{
Debug.LogFormat("Received paid event. (currency: {0}, value: {1}",
args.AdValue.CurrencyCode, args.AdValue.Value);
}
}
Учитывайте истечение срока действия рекламы.
Рекламные объявления, отображаемые в открытом приложении, будут автоматически удалены через четыре часа. Объявления, показанные более чем через четыре часа после запроса, станут недействительными и могут не приносить доход.
Чтобы избежать показа просроченной рекламы, измените свойство IsAdAvailable на AppOpenAdManager , который проверяет, сколько времени прошло с момента загрузки вашей рекламы. Затем используйте этот метод для проверки того, актуальна ли реклама до сих пор.
AppOpenAdManager.cs
public class AppOpenAdManager
{
...
// TODO: Add loadTime field
private DateTime loadTime;
private bool IsAdAvailable
{
get
{
// TODO: Consider ad expiration
return ad != null && (System.DateTime.UtcNow - loadTime).TotalHours < 4;
}
}
public void LoadAd()
{
if (IsAdAvailable)
{
return;
}
AdRequest request = new AdRequest.Builder().Build();
AppOpenAd.LoadAd(AD_UNIT_ID, ScreenOrientation.Portrait, request, ((appOpenAd, error) =>
{
if (error != null)
{
Debug.LogFormat("Failed to load the ad. (reason: {0})", error.LoadAdError.GetMessage());
return;
}
ad = appOpenAd;
Debug.Log("App open ad loaded");
// TODO: Keep track of time when the ad is loaded.
loadTime = DateTime.UtcNow;
}));
}
}
6. Обновите сцену, чтобы загрузить/показать рекламу.
Обновите метод Start() в классе MainScene , чтобы при запуске сцены загружалась рекламная вставка с открытым приложением.
Для получения уведомлений о событиях, связанных с переходом приложения в активный режим, мы рекомендуем использовать синглтон AppStateEventNotifier. Реализовав делегат AppStateEventNotifier.AppStateChanged , ваше приложение будет получать оповещения о событиях запуска и перехода приложения в активный режим, и сможет показывать рекламу.
MainScene.cs
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine;
public class MainScene : MonoBehaviour
{
public void Start()
{
// TODO: Request an app open ad.
MobileAds.Initialize((initStatus) =>
{
AppOpenAdManager.Instance.LoadAd();
AppStateEventNotifier.AppStateChanged += OnAppStateChanged;
});
}
public void OnAppStateChanged(AppState state)
{
if (state == AppState.Foreground)
{
// TODO: Show an app open ad if available.
AppOpenAdManager.Instance.ShowAdIfAvailable();
}
}
}
Вот и всё! Соберите и запустите проект на устройстве или эмуляторе. После запуска приложения подождите несколько секунд, пока полностью загрузится реклама.
После этого, когда вы вернетесь в приложение из других приложений/с главного экрана, откроется рекламное объявление приложения, как показано ниже.

7. Всё готово!
Вы завершили выполнение задания в CodeLab. Полный код для этого задания можно найти в...
полная папка.
