Межстраничная реклама — это полноэкранная реклама, закрывающая интерфейс основного приложения. Обычно они отображаются в естественных точках перехода в работе приложения, например, во время паузы между уровнями в игре. Когда приложение показывает межстраничную рекламу, у пользователя есть выбор: либо нажать на рекламу и продолжить движение к месту назначения, либо закрыть ее и вернуться в приложение.
В этом руководстве объясняется, как интегрировать межстраничную рекламу в приложение 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.
});
}
}
Если вы используете агрегатор, подождите, пока произойдет обратный вызов, прежде чем загружать объявления, так как это обеспечит инициализацию всех адаптеров агрегатора.
Выполнение
Основные шаги по интеграции межстраничной рекламы:
- Загрузите межстраничное объявление
- Показать межстраничное объявление
- Слушайте события межстраничной рекламы
- Очистите межстраничную рекламу
- Предварительная загрузка следующего межстраничного объявления
Загрузите межстраничное объявление
Загрузка межстраничного объявления осуществляется с помощью статического метода Load()
класса InterstitialAd
. Для метода загрузки требуется идентификатор рекламного блока, объект 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();
Это уведомляет плагин о том, что объект больше не используется и занимаемая им память может быть освобождена. Невызов этого метода приводит к утечкам памяти.
Предварительная загрузка следующего межстраничного объявления
Межстраничная реклама представляет собой объект одноразового использования. Это означает, что после показа межстраничной рекламы объект нельзя будет использовать снова. Чтобы запросить другое межстраничное объявление, создайте новый объект 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();
};
}
События приложения
События приложения позволяют создавать рекламу, которая может отправлять сообщения в код приложения. Затем приложение может предпринимать действия на основе этих сообщений.
Вы можете прослушивать определенные события приложения Менеджера рекламы с помощью 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()
, которое можно вызвать, когда пользователь завершил взаимодействие с объявлением. Кроме того, рассмотрите возможность временной остановки любых интенсивных вычислительных задач, таких как игровой цикл, во время показа рекламы. Это гарантирует, что пользователь не столкнется с медленной или неотзывчивой графикой или заиканием видео. - Не заваливайте пользователя рекламой.
- Хотя увеличение частоты показа межстраничной рекламы в вашем приложении может показаться отличным способом увеличить доход, оно также может ухудшить взаимодействие с пользователем и снизить рейтинг кликов. Убедитесь, что пользователей не отвлекают так часто, что они больше не смогут получать удовольствие от использования вашего приложения.
Дополнительные ресурсы
- Пример HelloWorld : минимальная реализация всех форматов рекламы.