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