Нативная реклама обладает множеством расширенных функций, позволяющих вносить дополнительные настройки и создавать максимально эффективный рекламный опыт. В этом руководстве показано, как использовать расширенные возможности нативной рекламы.
Предварительные требования
- Интегрируйте формат нативной рекламы .
Контроль активов
В этом разделе подробно описано, как настроить креативные материалы в ваших нативных объявлениях. Вы можете указать предпочтительное соотношение сторон для медиафайлов, а также способ загрузки и отображения изображений.
Предпочтительные параметры соотношения сторон медиафайлов
Функция «Управление соотношением сторон медиафайлов» позволяет задать предпочтительное соотношение сторон рекламных креативов.
Вызовите метод NativeAdRequest.Builder.setMediaAspectRatio() со значением NativeAd.NativeMediaAspectRatio .
Если параметр не задан, возвращаемое объявление может иметь любое соотношение сторон.
После установки этой настройки вы сможете улучшить пользовательский опыт, указав предпочтительный тип соотношения сторон.
В следующем примере SDK указывается, что при получении изображения или видео необходимо отдавать предпочтение определенному соотношению сторон.
Котлин
val adRequest = NativeAdRequest.Builder(
"/21775744923/example/native",
listOf(NativeAd.NativeAdType.NATIVE))
.setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
.build()
Java
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"/21775744923/example/native",
List.of(NativeAd.NativeAdType.NATIVE))
.setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
.build();
управление загрузкой изображения
Функция управления загрузкой изображений позволяет определить, будут ли SDK возвращать графические ресурсы или только URI.
Вызовите NativeAdRequest.Builder.disableImageDownloading() .
Управление загрузкой изображений по умолчанию отключено.
Если эта функция отключена, GMA Next-Gen SDK автоматически заполняет как изображение, так и URI.
При включении этой функции SDK автоматически заполняет только URI, позволяя вам загружать сами изображения по своему усмотрению.
В следующем примере SDK получает указание вернуть только URI.
Котлин
val adRequest = NativeAdRequest.Builder(
"/21775744923/example/native",
listOf(NativeAd.NativeAdType.NATIVE))
.setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
.disableImageDownloading()
.build()
val adCallback: NativeAdLoaderCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Get the image uri.
val imageUri = nativeAd.image?.uri
}
};
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);
Java
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"/21775744923/example/native",
List.of(NativeAd.NativeAdType.NATIVE))
.disableImageDownloading()
.build();
NativeAdLoaderCallback adLoaderCallback =
new NativeAdLoaderCallback() {
@Override
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
// Get the image uri.
Uri imageUri = nativeAd.getImage().getUri();
}
};
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);
Управление полезной нагрузкой изображения
В некоторых рекламных объявлениях используется серия изображений, а не одно. Используйте эту функцию, чтобы указать, готово ли ваше приложение отображать все изображения или только одно.
Элементы управления полезной нагрузкой изображения по умолчанию отключены.
При отключении этой функции ваше приложение дает указание SDK предоставлять только первое изображение для любых ресурсов, содержащих серию.
Если эта функция включена, ваше приложение указывает, что оно готово отображать все изображения для любых ресурсов, которые имеют более одного изображения.
В следующем примере SDK получает указание вернуть несколько графических ресурсов.
Размещение рекламы AdChoices
В этом разделе подробно описано, как расположить всплывающее окно AdChoices. Вы можете установить его местоположение в одном из четырех углов или отобразить его в пользовательском окне.
Управление размещением AdChoices
Элементы управления положением AdChoices позволяют выбрать, в каком углу будет отображаться значок AdChoices.
Вызовите метод NativeAdRequest.Builder.setAdChoicesPlacement() со значением NativeAdRequest.AdChoicesPlacement .
Если этот параметр не задан, значок AdChoices будет расположен в правом верхнем углу.
Если задано, AdChoices размещается в указанном вами месте в соответствии с запросом.
В следующем примере показано, как задать пользовательское положение изображения в AdChoices.
Котлин
val adRequest = NativeAdRequest.Builder(
"/21775744923/example/native",
listOf(NativeAd.NativeAdType.NATIVE))
.setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
.build()
Java
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"/21775744923/example/native",
List.of(NativeAd.NativeAdType.NATIVE))
.setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
.build();
пользовательский вид AdChoices
Функция пользовательского отображения AdChoices позволяет разместить значок AdChoices в произвольном месте. Это отличается от элементов управления положением AdChoices, которые позволяют указать только один из четырех углов.
Вызовите метод NativeAdView.setAdChoicesView() со значением AdChoicesView .
В следующем примере показано, как настроить пользовательское представление AdChoices, в котором значок AdChoices отображается внутри AdChoicesView .
Котлин
override fun onNativeAdLoaded(nativeAd: NativeAd) {
val nativeAdView = NativeAdView(applicationContext)
val adChoicesView = AdChoicesView(this)
nativeAdView.adChoicesView = adChoicesView
}
Java
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
NativeAdView nativeAdView = new NativeAdView(getApplicationContext());
AdChoicesView adChoicesView = new AdChoicesView(this);
nativeAdView.setAdChoicesView(adChoicesView);
}
Управление видео
В этом разделе подробно описано, как настроить воспроизведение видеорекламы. Вы можете установить начальное состояние отключения звука и добавить пользовательские элементы управления воспроизведением.
Запустить функцию отключения звука
Функция "Запуск без звука" позволяет отключить или включить начальный звук видео.
Вызовите метод VideoOptions.Builder.setStartMuted() с boolean значением и вызовите метод NativeAdOptions.Builder.setVideoOptions() .
Функция отключения звука при запуске включена по умолчанию.
Если эта функция отключена, ваше приложение запрашивает, чтобы видео начиналось со звука.
При включении этой функции ваше приложение запрашивает, чтобы видео начиналось с отключенным звуком.
В следующем примере показано, как запустить видео с включенным звуком.
Котлин
val videoOptions = VideoOptions.Builder()
.setStartMuted(false)
.build()
val adRequest = NativeAdRequest.Builder(
"/21775744923/example/native",
listOf(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
Java
VideoOptions videoOptions = VideoOptions.Builder()
.setStartMuted(false)
.build()
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"/21775744923/example/native",
List.of(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
Настраиваемые элементы управления воспроизведением
Это позволяет запрашивать пользовательские элементы управления видеовходом для воспроизведения, паузы или отключения звука видео.
Чтобы установить состояние отключения звука при запуске рекламы, вызовите метод VideoOptions.Builder.setCustomControlsRequested() .
Пользовательские элементы управления воспроизведением по умолчанию отключены.
Если эта функция отключена, в видео будут отображаться элементы управления ввода, созданные с помощью SDK.
Если в рекламе есть видеоконтент и включены пользовательские элементы управления, то вам следует отображать эти элементы управления вместе с рекламой, поскольку сама реклама не будет показывать никаких элементов управления. Затем элементы управления смогут вызывать соответствующие методы.
VideoOptions.Builder.setCustomControlsRequested() .
В следующем примере показано, как запросить видео с настраиваемыми элементами управления воспроизведением.
Котлин
val videoOptions: VideoOptions.Builder()
.setCustomControlsRequested(true)
.build()
val adRequest = new NativeAdRequest.Builder(
"/21775744923/example/native",
listOf(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
Java
VideoOptions VideoOptions = VideoOptions.Builder()
.setCustomControlsRequested(true)
.build()
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"/21775744923/example/native",
List.of(NativeAd.NativeAdType.NATIVE))
.setVideoOptions(videoOptions)
.build()
Проверьте, включены ли пользовательские элементы управления.
Поскольку на момент запроса неизвестно, будет ли возвращаемая реклама разрешать пользовательские элементы управления видео, необходимо проверить, включены ли в ней пользовательские элементы управления.
Котлин
val adCallback: NativeAdLoaderCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
val mediaContent = nativeAd.mediaContent;
if (mediaContent != null) {
val videoController = mediaContent.videoController;
val canShowCustomControls = videoController?.isCustomControlsEnabled();
}
}
};
Java
NativeAdLoaderCallback adCallback =
new NativeAdLoaderCallback() {
@Override
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
MediaContent mediaContent = nativeAd.getMediaContent();
if (mediaContent != null) {
VideoController videoController = mediaContent.getVideoController();
if (videoController != null) {
boolean canShowCustomControls = videoController.isCustomControlsEnabled();
}
}
}
};
Рендеринг пользовательских элементов управления видео
При создании пользовательских элементов управления видео используйте следующие рекомендации:
- Отобразите представление пользовательских элементов управления как дочерний элемент представления нативной рекламы. Такой подход позволяет расчетам видимости OpenMeasure учитывать пользовательские элементы управления как удобное препятствие.
- Избегайте создания невидимого наложения поверх всего медиаконтента. Наложения блокируют клики по медиаконтенту, что негативно сказывается на эффективности нативной рекламы. Вместо этого создайте небольшое наложение, размер которого будет достаточен только для размещения элементов управления.
Настраиваемые жесты щелчка
Функция пользовательских жестов клика — это функция нативной рекламы, позволяющая регистрировать свайпы по рекламным объявлениям как клики по ним. Она разработана для работы с приложениями, использующими жесты свайпа для навигации по контенту. В этом руководстве показано, как включить пользовательские жесты клика для вашей нативной рекламы.
Вызовите метод NativeAdRequest.Builder.enableCustomClickGestureDirection() с параметром NativeAd.SwipeGestureDirection и boolean значением.
В следующем примере реализован пользовательский жест свайпа вправо, при этом сохраняется обычное поведение вкладок.
Пользовательские жесты щелчка по умолчанию отключены.
При отключении этой функции ваше приложение будет поддерживать обычное поведение при нажатии кнопок.
При включении этой функции ваше приложение будет поддерживать пользовательские жесты смахивания.
В следующем примере реализован пользовательский жест свайпа вправо, при этом сохраняется обычное поведение вкладок.
Котлин
val adOptions = NativeAdOptions
.Builder()
.enableCustomClickGestureDirection(
/* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
/* tapsAllowed= */ true)
.build();
// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
val adRequest = NativeAdRequest.Builder(
"/21775744923/example/native",
listOf(NativeAd.NativeAdType.NATIVE))
.withNativeAdOptions(adOptions)
.build();
Java
NativeAdOptions adOptions = new NativeAdOptions
.Builder()
.enableCustomClickGestureDirection(
/* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
/* tapsAllowed= */ true)
.build();
// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
NativeAdRequest adRequest = new NativeAdRequest.Builder(
"/21775744923/example/native",
List.of(NativeAd.NativeAdType.NATIVE))
.withNativeAdOptions(adOptions)
.build();
Отслеживайте события жеста смахивания.
Чтобы отслеживать события жеста смахивания, вызовите NativeAd.setAdEventCallback() с объектом NativeAdEventCallback и реализуйте метод onAdSwipeGestureClicked() .
Котлин
val adCallback: NativeAdLoaderCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Implement the onAdSwipeGestureClicked() method.
val nativeAdCallback: NativeAdEventCallback = object : NativeAdEventCallback {
override fun onAdSwipeGestureClicked() {
// A swipe gesture click has occurred.
}
}
}
}
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adCallback)
Java
NativeAdLoaderCallback adCallback =
new NativeAdLoaderCallback() {
@Override
public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
// Implement the onAdSwipeGestureClicked() method.
NativeAdEventCallback nativeAdCallback = new NativeAdEventCallback() {
@Override
public void onAdSwipeGestureClicked() {
// A swipe gesture click has occurred.
}
};
}
};
// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adCallback);
Медиация
Настраиваемые жесты клика работают только для нативных объявлений, которые обрабатываются с помощью Google Mobile Ads SDK. Объявления, для отображения которых требуются сторонние SDK , не реагируют на настройку пользовательских жестов клика.