В этом руководстве показано, как использовать надстройку для нативной рекламы, чтобы реализовать нативную рекламу AdMob в приложении Unity, а также некоторые важные моменты, которые следует учитывать при этом.
Нативная реклама соответствует как форме, так и функции пользовательского опыта, в котором она размещена. Она также соответствует визуальному дизайну приложения, в котором она находится. Формат нативной рекламы AdMob позволяет издателям отображать рекламу, которая органично сочетается с контентом. Вы можете использовать эту технологию для реализации высоконастраиваемых рендерингов, которые в полной мере используют нативный код в приложениях Unity.
Нативная реклама отображается с использованием тех же типов GameObjects
, с которыми вы уже создаете свои приложения, и может быть отформатирована в соответствии с визуальным дизайном пользовательского опыта, в котором они находятся. Когда загружается нативная реклама, ваше приложение получает нативный объект, содержащий ее активы, и приложение Unity (а не SDK) отображает их.
Предпосылки
- Плагин Google Mobile Ads Unity версии 7.0.0 или выше.
- Заполните руководство по началу работы .
- Загрузите и установите дополнение для нативной рекламы.
Загрузить собственные форматы рекламы
Нативная реклама загружается через класс AdLoader
, который имеет свой собственный класс AdLoader.Builder
для настройки во время создания. Метод ForNativeAd()
настраивает AdLoader для обработки нативной рекламы.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
Зарегистрируйтесь на рекламные мероприятия AdLoader
Чтобы получать уведомления об успешной или неудачной загрузке нативной рекламы, добавьте делегаты в класс AdLoader
для событий, перечисленных ниже.
OnNativeAdLoaded
Вызывается при успешной загрузке нативной рекламы. Для этого события требуется делегат для доступа к загруженной рекламе.
OnAdFailedToLoad
Вызывается, когда не загружается нативная реклама.
Загрузить объявление
Закончив создание AdLoader
, вызовите его метод LoadAd()
, чтобы запросить рекламу:
adLoader.LoadAd(new AdRequest.Builder().Build());
Составьте запрос на объявление
В приведенном ниже фрагменте кода показано, как создать AdLoader
, настроенный на запрос нативной рекламы, задать делегатов для успешной и неудачной загрузки рекламы и выполнить запрос рекламы.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
Обработка неудачных загрузок рекламы
Событие OnAdFailedToLoad
имеет тип EventHandle<AdFailedToLoadEventArgs>
. Ниже показан анализ причины сбоя загрузки рекламы из этого события.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
Показывать нативную рекламу
При загрузке Native Ad вызывается событие ad для соответствующего формата ad. Затем ваше приложение отвечает за отображение рекламы, хотя оно не обязательно должно делать это немедленно.
Обработка рекламной нагрузки
Событие OnNativeAdLoaded
имеет тип EventHandler<NativeAdEventArgs>
. Рекламу, инкапсулированную в объект NativeAd
, можно извлечь из NativeAdEventArgs
, как показано ниже:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
Извлечение собственных рекламных ресурсов
После загрузки рекламы ее активы могут быть доступны, как показано ниже. Графические активы возвращаются как объекты Texture2D
, а текстовые активы возвращаются как string
объекты.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
Обратите внимание, что доступ к рекламным ресурсам должен осуществляться только в основном потоке, например, из метода Update()
скрипта Unity. Также обратите внимание, что следующие ресурсы не всегда гарантированно присутствуют и должны быть проверены перед отображением:
-
GetStarRating()
-
GetStore()
-
GetPrice()
-
GetAdvertiser()
-
GetIconTexture()
Актив AdChoices
Это требование для отображения рекламного актива AdChoices как части нативной рекламы. Кроме того, важно, чтобы рекламный актив AdChoices был легко видим, поэтому выбирайте фоновые цвета и изображения соответствующим образом.
Регистрация GameObjects для рекламного актива
Вам необходимо зарегистрировать GameObject
для отображения рекламного ресурса в вашем приложении Unity. Если регистрация прошла успешно, метод, используемый для регистрации GameObject
, возвращает bool
. Для List<GameObject>
метод возвращает int
, указывающий количество успешно зарегистрированных GameObject
.
Если регистрация рекламного актива не удалась, показы и клики по соответствующему нативному объявлению не будут распознаны.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
GameObject
, зарегистрированный для рекламного актива, должен иметь выпуклый компонент Collider, который представляет размер и форму GameObject
. Если объекты GameObject
, зарегистрированные для рекламных активов, не имеют компонентов Collider
или имеют неправильно настроенный компонент, нативная реклама не будет работать правильно.
В приведенном ниже фрагменте кода BoxCollider
добавляется к GameObject
, который использует TextMesh
для отображения заголовка рекламного актива нативной рекламы. После присоединения BoxCollider
к GameObject
он автоматически масштабируется для размещения текста компонента TextMesh
.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
Демо
Следующий код демонстрирует, как получить актив значка успешно загруженной нативной рекламы, отобразить актив значка рекламы, установив текстуру Quad
и зарегистрировать GameObject
для использования для отображения актива. Этот процесс получения актива рекламы и его регистрации в классе нативной рекламы должен быть повторен для каждого из активов, которые отображает приложение.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}