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