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
Репозиторий содержит две папки:
- starter: Начальный код, который вы создадите в этой лаборатории кода.
- Complete: завершенный код для этой лаборатории.
3. Настройте приложение AdMob и рекламные блоки.
Поскольку Unity – это мультиплатформенный SDK, вам необходимо добавить в AdMob приложение и рекламные блоки как для Android, так и для iOS.
Настройка для 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 (iOS) в меню «Приложения» в консоли AdMob .
- Откройте меню «Рекламные блоки» .
|
Обычно новому рекламному блоку требуется несколько часов, чтобы начать показ объявлений.
Если вы хотите немедленно протестировать поведение объявления, используйте идентификатор тестового приложения и идентификаторы рекламных блоков, перечисленные в следующей таблице.
Необязательно: используйте тестовое приложение AdMob и рекламные блоки.
Если вы хотите следовать кодовой лаборатории вместо того, чтобы создавать новое приложение и рекламные блоки самостоятельно, вы можете использовать тестовый идентификатор приложения AdMob и идентификаторы рекламных блоков, перечисленные в следующих таблицах.
Идентификатор приложения Android/идентификатор рекламного блока
Элемент | Идентификатор приложения/идентификатор рекламного блока |
Идентификатор приложения Рекламы в приложении | |
Идентификатор рекламного блока | |
Идентификатор приложения iOS/идентификатор рекламного блока
Элемент | Идентификатор приложения/идентификатор рекламного блока |
Идентификатор приложения Рекламы в приложении | |
Идентификатор рекламного блока | |
Дополнительные сведения о тестовых объявлениях см. в тестовых объявлениях для Android и документации для разработчиков тестовых объявлений для iOS .
4. Добавьте плагин Google Mobile Ads Unity.
Интеграция плагина Google Mobile Ads Unity — это первый шаг на пути к показу рекламы AdMob и получению дохода.
Загрузите плагин Unity для мобильной рекламы
Плагин Google Mobile Ads Unity позволяет разработчикам Unity легко размещать Google Mobile Ads в приложениях для Android и iOS. Плагин предоставляет интерфейс C# для запроса рекламы, который используется скриптами C# в вашем проекте Unity.
Используйте ссылку ниже, чтобы загрузить пакет Unity для плагина.
Откройте стартовый проект
- Запустите Unity Hub.
- На вкладке «Проекты» нажмите кнопку «ДОБАВИТЬ» .
- Перейдите в папку, в которую вы извлекли загруженный код на этапе «Настройка среды разработки».
- Откройте стартовую папку.
- Вы увидите стартовый проект в списке проектов. Щелкните проект, чтобы открыть его в редакторе Unity.
Импортируйте плагин Mobile Ads Unity.
- В редакторе Unity выберите в меню «Ресурсы» > «Импортировать пакет» > «Пользовательский пакет» .
- Выберите пакет
GoogleMobileAds-{VERSION}.unitypackage
который вы скачали на предыдущем шаге. - Убедитесь, что все файлы выбраны, и нажмите «Импортировать» .
Установите идентификатор приложения AdMob
- В редакторе Unity выберите в меню «Ресурсы» > «Google Mobile Ads» > «Настройки» .
- Введите идентификатор приложения AdMob для Android и iOS в каждое поле. Если вы хотите следовать кодовой лаборатории вместо того, чтобы создавать новое приложение и рекламные блоки самостоятельно, введите идентификатор тестового приложения AdMob следующим образом.
5. Создайте служебный класс
Создайте новый класс под названием AppOpenAdManager
в папке «Сценарии» . Этот класс управляет переменной экземпляра для отслеживания загруженного объявления и идентификатора рекламного блока для каждой платформы.
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. Все готово!
Вы завершили кодовую лабораторию. Вы можете найти готовый код для этой лаборатории кода в разделе полная папка.