Баннерная реклама представляет собой прямоугольную графическую или текстовую рекламу, занимающую определенное место на экране. Они остаются на экране, пока пользователи взаимодействуют с приложением, и могут автоматически обновляться через определенный период времени. Если вы новичок в мобильной рекламе, это отличное место для начала. Тематическое исследование .
В этом руководстве показано, как интегрировать рекламные баннеры из AdMob в приложение Unity. Помимо фрагментов кода и инструкций, он также содержит информацию о правильном выборе размеров баннеров и ссылки на дополнительные ресурсы.
Предпосылки
- Заполните руководство по началу работы.
Создать баннер
Первым шагом к отображению баннера является создание объекта BannerView
в скрипте C#, присоединенном к GameObject
.
using System;
using UnityEngine;
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
private BannerView bannerView;
...
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize(initStatus => { });
this.RequestBanner();
}
private void RequestBanner()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/2934735716";
#else
string adUnitId = "unexpected_platform";
#endif
// Create a 320x50 banner at the top of the screen.
this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
}
}
Конструктор для BannerView
имеет следующие параметры:
-
adUnitId
— идентификатор рекламного блока AdMob, из которогоBannerView
должен загружать рекламу. -
AdSize
– размер объявления AdMob, который вы хотели бы использовать (подробности см. в разделе " Размеры баннеров "). -
AdPosition
— позиция, на которой должен быть размещен рекламный баннер. В перечисленииAdPosition
перечислены допустимые значения позиции объявления.
Важно отметить, как используются разные рекламные блоки в зависимости от платформы. Вам нужно будет использовать рекламный блок iOS для отправки запросов объявлений на iOS и рекламный блок Android для отправки запросов на Android.
(Необязательно) Пользовательская позиция объявления
Для большего контроля над тем, где BannerView
размещается на экране, чем то, что предлагается значениями AdPosition
, используйте конструктор BannerView
, который имеет координаты x и y в качестве параметров:
// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);
Верхний левый угол BannerView
будет располагаться по значениям x и y, переданным в конструктор, где исходным положением является верхний левый угол экрана.
(Необязательно) Пользовательские размеры объявлений
Помимо использования константы AdSize, вы также можете указать собственный размер для своего объявления:
AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);
Всегда тестируйте тестовые объявления
Приведенный выше пример кода содержит идентификатор рекламного блока, и вы можете запросить рекламу с его помощью. Он был специально настроен для возврата тестовых объявлений, а не рабочих объявлений для каждого запроса, что делает его безопасным для использования.
Однако, как только вы зарегистрируете приложение в пользовательском интерфейсе AdMob и создадите собственные идентификаторы рекламных блоков для использования в своем приложении, вам потребуется явным образом настроить свое устройство в качестве тестового во время разработки. Это чрезвычайно важно. Тестирование с реальными объявлениями (даже если вы никогда не нажимаете на них) противоречит политике AdMob и может привести к блокировке вашего аккаунта. Прочтите Тестовые объявления , чтобы узнать, как убедиться, что вы всегда получаете тестовые объявления при разработке.
Загрузить объявление
После создания экземпляра BannerView
следующим шагом будет загрузка рекламы. Это делается с помощью loadAd()
в классе BannerView
. Он принимает аргумент AdRequest
, который содержит информацию о времени выполнения (например, информацию о таргетинге) для одного запроса объявления.
Вот пример, который показывает, как загрузить рекламу:
... private void RequestBanner() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/6300978111"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/2934735716"; #else string adUnitId = "unexpected_platform"; #endif // Create a 320x50 banner at the top of the screen. this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top); // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the banner with the request. this.bannerView.LoadAd(request); } ...
Вот и все! Теперь ваше приложение готово к показу рекламных баннеров из AdMob.
Рекламные события
Чтобы дополнительно настроить поведение вашего объявления, вы можете подключиться к ряду событий в жизненном цикле объявления: загрузка, открытие, закрытие и т. д. Прослушайте эти события, зарегистрировав делегат для соответствующего EventHandler
, как показано ниже.
... using System; using UnityEngine; using GoogleMobileAds.Api; ... public class GoogleMobileAdsDemoScript : MonoBehaviour { private BannerView bannerView; public void Start() { this.RequestBanner(); } private void RequestBanner() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/6300978111"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/2934735716"; #else string adUnitId = "unexpected_platform"; #endif this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top); // Called when an ad request has successfully loaded. this.bannerView.OnAdLoaded += this.HandleOnAdLoaded; // Called when an ad request failed to load. this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad; // Called when an ad is clicked. this.bannerView.OnAdOpening += this.HandleOnAdOpened; // Called when the user returned from the app after an ad click. this.bannerView.OnAdClosed += this.HandleOnAdClosed; // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the banner with the request. this.bannerView.LoadAd(request); } public void HandleOnAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLoaded event received"); } public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { MonoBehaviour.print("HandleFailedToReceiveAd event received with message: " + args.LoadAdError.GetMessage()); } public void HandleOnAdOpened(object sender, EventArgs args) { MonoBehaviour.print("HandleAdOpened event received"); } public void HandleOnAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleAdClosed event received"); } }
Событие OnAdFailedToLoad
содержит специальные аргументы события. Он передает экземпляр HandleAdFailedToLoadEventArgs
с Message
, описывающим ошибку:
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print("Banner failed to load: " + args.Message);
// Handle the ad failed to load event.
};
Рекламное событие | Описание |
---|---|
OnAdLoaded | Событие OnAdLoaded выполняется после завершения загрузки объявления. |
OnAdFailedToLoad | Событие OnAdFailedToLoad вызывается, когда объявление не загружается. Параметр Message описывает тип произошедшей ошибки. |
OnAdOpening | Этот метод вызывается, когда пользователь нажимает на объявление. Если вы используете аналитический пакет для отслеживания кликов, это хорошее место для его записи. |
OnAdClosed | Когда пользователь возвращается в приложение после просмотра целевого URL объявления, вызывается этот метод. Ваше приложение может использовать его для возобновления приостановленных действий или выполнения любой другой работы, необходимой для подготовки к взаимодействию. |
Размеры баннеров
В таблице ниже перечислены стандартные размеры баннеров.
Размер в дп (ШхВ) | Описание | Доступность | Константа AdSize |
---|---|---|---|
320x50 | Стандартный баннер | Телефоны и планшеты | BANNER |
320x100 | Большое знамя | Телефоны и планшеты | LARGE_BANNER |
300 x 250 | IAB Средний прямоугольник | Телефоны и планшеты | MEDIUM_RECTANGLE |
468x60 | Полноразмерный баннер IAB | Таблетки | FULL_BANNER |
728x90 | Таблица лидеров IAB | Таблетки | LEADERBOARD |
Предоставленная ширина x адаптивная высота | Адаптивный баннер | Телефоны и планшеты | Н/Д |
Ширина экрана x 32|50|90 | Умный баннер | Телефоны и планшеты | SMART_BANNER |
Узнайте больше об адаптивных баннерах , предназначенных для замены смарт-баннеров . |
Очистить рекламные баннеры
Когда вы закончите работу с BannerView
, обязательно вызовите метод Destroy()
, прежде чем добавлять ссылку на него:
bannerView.Destroy();
Это уведомляет плагин о том, что объект больше не используется и занимаемая им память может быть освобождена. Невызов этого метода приводит к утечке памяти.