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

Выберите платформу: Android iOS Unity Flutter

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

Это руководство показывает, как интегрировать представления баннеров в приложение 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 учитывает любую частоту обновления, указанную вами в пользовательском интерфейсе Менеджера объявлений. Если вы не включили обновление, отправьте новый запрос. Для получения дополнительных сведений об обновлении рекламного блока, например, о настройке частоты обновления, см. раздел Частота обновления для объявлений в мобильных приложениях .

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

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

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

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

Вы можете прослушивать события приложения Ad Manager, используя 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>

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