Рекламные баннеры

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

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

Предварительные условия

Всегда тестируйте с помощью тестовых объявлений

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

Однако после того, как вы зарегистрировали приложение в веб-интерфейсе Менеджера рекламы и создали собственные идентификаторы рекламных блоков для использования в нем, во время разработки явно настройте свое устройство как тестовое .

/21775744923/example/adaptive-banner

Инициализируйте SDK мобильной рекламы

Перед загрузкой рекламы попросите ваше приложение инициализировать Mobile Ads SDK, вызвав MobileAds.Initialize() . Это необходимо сделать только один раз, в идеале при запуске приложения.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

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

Пример баннервиев

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

Создать вид баннера

Первым шагом в использовании представления баннера является создание экземпляра представления баннера в сценарии C#, прикрепленном к GameObject .


  // This ad unit is configured to always serve test ads.
  private string _adUnitId = "/21775744923/example/adaptive-banner";

  AdManagerBannerView _bannerView;

  /// <summary>
  /// Creates a 320x50 banner view at top of the screen.
  /// </summary>
  public void CreateBannerView()
  {
      Debug.Log("Creating banner view");

      // If we already have a banner, destroy the old one.
      if (_bannerView != null)
      {
          DestroyAd();
      }

      // Create a 320x50 banner at top of the screen
      _bannerView = new AdManagerBannerView(_adUnitId, AdSize.Banner, AdPosition.Top);
  }

Конструктор AdManagerBannerView имеет следующие параметры:

  • adUnitId : идентификатор рекламного блока, из которого AdManagerBannerView должен загружать объявления.
  • AdSize : размер объявления, которое вы хотите использовать. Подробную информацию см. в разделе «Размеры баннеров» .
  • AdPosition : позиция, в которой должен располагаться баннер. Перечисление AdPosition перечисляет допустимые значения позиции объявления.

Обратите внимание, как используются разные рекламные блоки в зависимости от платформы. Вам необходимо использовать рекламный блок iOS для отправки запросов объявлений на iOS и рекламный блок Android для отправки запросов на Android.

(Необязательно) Создайте вид баннера с произвольной позицией.

Для большего контроля над размещением AdManagerBannerView на экране, чем то, что предлагается значениями AdPosition , используйте конструктор, который имеет координаты x и y в качестве параметров:

// Create a 320x50 banner views at coordinate (0,50) on screen.
_bannerView = new AdManagerBannerView(_adUnitId, AdSize.Banner, 0, 50);

Верхний левый угол AdManagerBannerView располагается на значениях x и y, переданных конструктору, где начало координат находится в верхнем левом углу экрана.

(Необязательно) Создайте вид баннера нестандартного размера.

Помимо использования константы AdSize , вы также можете указать собственный размер вашего объявления:

// Use the AdSize argument to set a custom size for the ad.
AdSize adSize = new AdSize(250, 250);
_bannerView = new AdManagerBannerView(_adUnitId, adSize, AdPosition.Bottom);

(Необязательно) Несколько размеров объявлений

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

В своем приложении передайте несколько параметров AdSize в ValidAdSizes :

var adView = new AdManagerBannerView(_adUnitId, AdSize.Banner, AdPosition.Top);
adView.ValidAdSizes = new List<AdSize>
{
    AdSize.Banner, new AdSize(120, 20), new AdSize(250, 250),
};

Если AdManagerAdView меняет размер во время обновления, ваш макет сможет автоматически адаптироваться к новому размеру. AdManagerAdView по умолчанию использует размер, переданный в первом параметре, до тех пор, пока не будет возвращено следующее объявление.

Загрузите рекламный баннер

После того, как AdManagerBannerView создан, перейдите к загрузке объявления с помощью метода LoadAd() в классе AdManagerBannerView . Это требует параметр, который содержит информацию о времени выполнения, например информацию о таргетинге, метки исключений и идентификатор, предоставленный издателем.

/// <summary>
/// Creates the banner view and loads a banner ad.
/// </summary>
public void LoadAd()
{
    // create an instance of a banner view first.
    if(_bannerView == null)
    {
        CreateAdManagerBannerView();
    }

    // create our request used to load the ad.
    var adRequest = new AdManagerAdRequest();

    // send the request to load the ad.
    Debug.Log("Loading banner ad.");
    _bannerView.LoadAd(adRequest);
}

Прослушивание событий просмотра баннеров

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

/// <summary>
/// listen to events the banner view may raise.
/// </summary>
private void ListenToAdEvents()
{
    // Raised when an ad is loaded into the banner view.
    _bannerView.OnBannerAdLoaded += () =>
    {
        Debug.Log("Banner view loaded an ad with response : "
            + _bannerView.GetResponseInfo());
    };
    // Raised when an ad fails to load into the banner view.
    _bannerView.OnBannerAdLoadFailed += (LoadAdError error) =>
    {
        Debug.LogError("Banner view failed to load an ad with error : "
            + error);
    };
    // Raised when the ad is estimated to have earned money.
    _bannerView.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Banner view paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    _bannerView.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Banner view recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    _bannerView.OnAdClicked += () =>
    {
        Debug.Log("Banner view was clicked.");
    };
    // Raised when an ad opened full screen content.
    _bannerView.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Banner view full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    _bannerView.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Banner view full screen content closed.");
    };
}

Уничтожить вид баннера

Завершив использование представления баннера, обязательно вызовите Destroy() чтобы освободить ресурсы.

/// <summary>
/// Destroys the banner view.
/// </summary>
public void DestroyAd()
{
    if (_bannerView != null)
    {
        Debug.Log("Destroying banner view.");
        _bannerView.Destroy();
        _bannerView = null;
    }
}

Вот и все! Теперь ваше приложение готово к показу рекламных баннеров.

Обновить объявление

Если вы настроили обновление рекламного блока, вам не нужно запрашивать другое объявление, если оно не загружается. Google Mobile Ads SDK учитывает любую частоту обновления, указанную вами в пользовательском интерфейсе Менеджера рекламы. Если вы не включили обновление, отправьте новый запрос. Дополнительные сведения об обновлении рекламных блоков, например о настройке частоты обновления, см. в разделе Частота обновления объявлений в мобильных приложениях .

В таблице ниже указаны стандартные размеры баннеров.

Размер в дп (ШхВ) Описание Доступность Константа AdSize
320x50 Стандартный баннер Телефоны и планшеты BANNER
320x100 Большой баннер Телефоны и планшеты LARGE_BANNER
300x250 Средний прямоугольник IAB Телефоны и планшеты MEDIUM_RECTANGLE
468x60 Полноразмерный баннер IAB Таблетки FULL_BANNER
728x90 Таблица лидеров IAB Таблетки LEADERBOARD
Предоставленная ширина x Адаптивная высота Адаптивный баннер Телефоны и планшеты Н/Д
Ширина экрана х 32|50|90 Смарт-баннер Телефоны и планшеты SMART_BANNER
Узнайте больше об адаптивных баннерах , предназначенных для замены смарт-баннеров .

События приложения

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

Вы можете прослушивать определенные события приложения Менеджера рекламы с помощью AppEvent . Эти события могут произойти в любой момент жизненного цикла объявления, даже до вызова загрузки.

namespace GoogleMobileAds.Api.AdManager;

/// The App event message sent from the ad.
public class AppEvent
{
    // Name of the app event.
    string Name;
    // Argument passed from the app event.
    string Value;
}

OnAppEventReceived возникает, когда в объявлении происходит событие приложения. Вот пример того, как обработать это событие в вашем коде:

_bannerview.OnAppEventReceived += (AppEvent args) =>
{
    Debug.Log($"Received app event from the ad: {args.Name}, {args.Value}.");
};

Вот пример, показывающий, как изменить цвет фона вашего приложения в зависимости от события приложения с именем цвета:

_bannerview.OnAppEventReceived += (AppEvent args) =>
{
  if (args.Name == "color")
  {
    Color color;
    if (ColorUtility.TryParseColor(arg.Value, out color))
    {
      gameObject.GetComponent<Renderer>().material.color = color;
    }
  }
};

А вот соответствующий креатив, который отправляет событие цветного приложения:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Дополнительные ресурсы