Межстраничные объявления

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

Interstitial ads — это полноэкранные объявления, которые покрывают интерфейс своего хост-приложения. Обычно они отображаются в естественных точках перехода в потоке приложения, например, во время паузы между уровнями в игре. Когда приложение показывает interstitial ads, у пользователя есть выбор: нажать на рекламу и продолжить к месту назначения или закрыть ее и вернуться в приложение.

В этом руководстве объясняется, как интегрировать рекламные объявления в приложение Unity.

Предпосылки

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

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

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

/21775744923/example/interstitial

Инициализируйте 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.
        });
    }
}

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

Выполнение

Основные шаги по интеграции межстраничной рекламы:

  1. Загрузите промежуточную рекламу
  2. Показать промежуточную рекламу
  3. Прослушивание событий межстраничной рекламы
  4. Уберите промежуточную рекламу
  5. Предварительная загрузка следующей рекламной вставки

Загрузите промежуточную рекламу

Загрузка промежуточной рекламы выполняется с помощью статического метода Load() класса InterstitialAd . Методу load требуется идентификатор рекламного блока, объект AdManagerAdRequest и обработчик завершения, который вызывается при успешной или неудачной загрузке рекламы. Загруженный объект AdManagerInterstitialAd предоставляется в качестве параметра в обработчике завершения. В примере ниже показано, как загрузить AdManagerInterstitialAd .


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

  private InterstitialAd _interstitialAd;

  /// <summary>
  /// Loads the interstitial ad.
  /// </summary>
  public void LoadInterstitialAd()
  {
      // Clean up the old ad before loading a new one.
      if (_interstitialAd != null)
      {
            _interstitialAd.Destroy();
            _interstitialAd = null;
      }

      Debug.Log("Loading the interstitial ad.");

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

      // send the request to load the ad.
      AdManagerInterstitialAd.Load(_adUnitId, adRequest,
          (InterstitialAd ad, LoadAdError error) =>
          {
              // if error is not null, the load request failed.
              if (error != null || ad == null)
              {
                  Debug.LogError("interstitial ad failed to load an ad " +
                                 "with error : " + error);
                  return;
              }

              Debug.Log("Interstitial ad loaded with response : "
                        + ad.GetResponseInfo());

              _interstitialAd = ad;
          });
  }

Показать промежуточную рекламу

Чтобы показать загруженную промежуточную рекламу, вызовите метод Show() в экземпляре AdManagerInterstitialAd . Реклама может быть показана один раз за загрузку. Используйте метод CanShowAd() , чтобы проверить, что реклама готова к показу.

/// <summary>
/// Shows the interstitial ad.
/// </summary>
public void ShowInterstitialAd()
{
    if (_interstitialAd != null && _interstitialAd.CanShowAd())
    {
        Debug.Log("Showing interstitial ad.");
        _interstitialAd.Show();
    }
    else
    {
        Debug.LogError("Interstitial ad is not ready yet.");
    }
}

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

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

private void RegisterEventHandlers(InterstitialAd interstitialAd)
{
    // Raised when the ad is estimated to have earned money.
    interstitialAd.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    interstitialAd.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Interstitial ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    interstitialAd.OnAdClicked += () =>
    {
        Debug.Log("Interstitial ad was clicked.");
    };
    // Raised when an ad opened full screen content.
    interstitialAd.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Interstitial ad full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Interstitial ad full screen content closed.");
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);
    };
}

Уберите промежуточную рекламу

Когда вы закончите работу с AdManagerInterstitialAd , обязательно вызовите метод Destroy() прежде чем удалять ссылку на него:

_interstitialAd.Destroy();

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

Предварительная загрузка следующей рекламной вставки

Interstitial ads — это одноразовый объект. Это означает, что после показа interstitial ads объект не может быть использован снова. Чтобы запросить еще одну interstitial ads, создайте новый объект AdManagerInterstitialAd .

Чтобы подготовить рекламное объявление к следующему показу, предварительно загрузите его после возникновения события OnAdFullScreenContentClosed или OnAdFullScreenContentFailed .

private void RegisterReloadHandler(InterstitialAd interstitialAd)
{
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += ()
    {
        Debug.Log("Interstitial Ad full screen content closed.");

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
}

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

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

Вы можете прослушивать события приложения 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 возникает, когда в рекламе происходит событие приложения. Вот пример того, как обрабатывать это событие в вашем коде:

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

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

_interstitialAd.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>

Лучшие практики

Определите, являются ли межстраничные объявления подходящим типом рекламы для вашего приложения.
Интерстициальная реклама лучше всего работает в приложениях с естественными точками перехода. Завершение задачи в приложении, например, отправка изображения или завершение игрового уровня, создает такую ​​точку. Обязательно продумайте, в каких точках потока вашего приложения лучше всего отображать промежуточную рекламу и как пользователь, скорее всего, отреагирует.
Приостановите действие при показе рекламного объявления.
Существует ряд различных типов рекламных вставок, таких как текст, изображение или видео. Важно убедиться, что когда ваше приложение отображает рекламу, оно также приостанавливает использование некоторых ресурсов, чтобы реклама могла воспользоваться ими. Например, когда вы делаете вызов для отображения рекламы, обязательно приостановите любой аудиовыход, производимый вашим приложением. Вы можете возобновить воспроизведение звуков в событии OnAdFullScreenContentClosed() , которое может быть вызвано, когда пользователь закончит взаимодействовать с рекламой. Кроме того, рассмотрите возможность временной остановки любых интенсивных вычислительных задач, таких как игровой цикл, во время отображения рекламы. Это гарантирует, что пользователь не столкнется с медленной или неотзывчивой графикой или прерывистым видео.
Не перегружайте пользователя рекламой.
Хотя увеличение частоты показов рекламных вставок в вашем приложении может показаться отличным способом увеличить доход, это также может ухудшить пользовательский опыт и снизить показатели кликабельности. Убедитесь, что пользователи не будут отвлекаться так часто, что они больше не смогут наслаждаться использованием вашего приложения.

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