Варианты нативной рекламы

Выберите платформу: Android iOS

Нативная реклама обладает множеством расширенных функций, позволяющих настраивать её по своему вкусу и создавать максимально комфортные условия для просмотра. Это руководство покажет вам, как использовать расширенные функции нативной рекламы.

Предпосылки

Контроль активов

Настройте элементы управления собственными рекламными активами.

Предпочтительные элементы управления соотношением сторон медиа-файла

Элементы управления соотношением сторон медиа-контента позволяют вам указать предпочтения по соотношению сторон рекламных креативов.

Вызовите NativeAdOptions.Builder.setMediaAspectRatio() со значением NativeAdOptions.MediaAspectRatio .

  • Если этот параметр не установлен, возвращаемое объявление может иметь любое соотношение сторон медиа-объекта.

  • После установки вы сможете улучшить пользовательский опыт, указав предпочтительный тип соотношения сторон.

В следующем примере SDK указывается, что следует отдавать предпочтение возвращаемому изображению или видео с определенным соотношением сторон.

Ява

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder()
        .setMediaAspectRatio(NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
        .build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Котлин

val nativeAdOptions =
  NativeAdOptions.Builder()
    .setMediaAspectRatio(NativeAdOptions.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
    .build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Замените AD_UNIT_ID на идентификатор вашего рекламного блока.

Управление загрузкой изображений

Управление загрузкой изображений позволяет вам решить, будут ли возвращаться SDK ресурсы изображений или только URI.

Вызовите NativeAdOptions.Builder.setReturnUrlsForImageAssets() с boolean значением.

  • Контроль загрузки изображений по умолчанию отключен.

  • Если эта опция отключена, Google Mobile Ads SDK автоматически заполняет как изображение, так и URI.

  • При включении SDK заполняет только URI, позволяя вам загружать изображения по вашему усмотрению.

В следующем примере SDK получает команду вернуть только URI.

Ява

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setReturnUrlsForImageAssets(true).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID")
        .withNativeAdOptions(nativeAdOptions)
        .forNativeAd(
            nativeAd -> {
              List<Uri> imageUris = new ArrayList<>();
              for (Image image : nativeAd.getImages()) {
                imageUris.add(image.getUri());
              }
            })
        .build();

Котлин

val nativeAdOptions = NativeAdOptions.Builder().setReturnUrlsForImageAssets(true).build()

val loader =
  AdLoader.Builder(context, "AD_UNIT_ID")
    .withNativeAdOptions(nativeAdOptions)
    .forNativeAd { nativeAd ->
      val imageUris = nativeAd.images.mapNotNull { it.uri }
    }
    .build()

Элементы управления полезной нагрузкой изображения

В некоторых объявлениях используется серия изображений, а не одно. Используйте эту функцию, чтобы указать, готово ли ваше приложение отображать все изображения или только одно.

Вызовите NativeAdOptions.Builder.setRequestMultipleImages() с boolean значением.

  • Элементы управления полезной нагрузкой изображений по умолчанию отключены.

  • Если эта опция отключена, ваше приложение дает SDK команду предоставить только первое изображение для любых ресурсов, содержащих серию.

  • При включении ваше приложение показывает, что оно готово отображать все изображения для любых активов, у которых их больше одного.

В следующем примере SDK получает команду вернуть несколько графических ресурсов.

Ява

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setRequestMultipleImages(true).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Котлин

val nativeAdOptions = NativeAdOptions.Builder().setRequestMultipleImages(true).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Места размещения AdChoices

Настройте отображение значка AdChoices.

Управление позициями AdChoices

Элементы управления положением AdChoices позволяют выбрать, в каком углу будет отображаться значок AdChoices.

Вызовите NativeAdOptions.Builder.setAdChoicesPlacement() со значением NativeAdOption.AdChoicesPlacement .

  • Если не установлено, значок AdChoices будет располагаться вверху справа.

  • Если установлено, AdChoices размещается в указанной пользователем позиции по запросу.

В следующем примере показано, как настроить пользовательскую позицию изображения AdChoices.

Ява

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder()
        .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
        .build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Котлин

val nativeAdOptions =
  NativeAdOptions.Builder()
    .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
    .build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Пользовательский вид AdChoices

Функция пользовательского представления AdChoices позволяет разместить значок AdChoices в нужном месте. Это отличается от настроек положения AdChoices, которые позволяют указать только один из четырёх углов.

Вызовите NativeAdView.setAdChoicesView() со значением AdChoicesView .

В следующем примере показано, как настроить пользовательское представление AdChoices со значком AdChoices, отображаемым внутри AdChoicesView .

Ява

NativeAdView nativeAdView = new NativeAdView(context);
AdChoicesView adChoicesView = new AdChoicesView(context);
nativeAdView.setAdChoicesView(adChoicesView);

Котлин

val nativeAdView = NativeAdView(context)
val adChoicesView = AdChoicesView(context)
nativeAdView.adChoicesView = adChoicesView

Видеоконтроль

Настройте поведение видеоресурсов.

Начать отключение звука

Функция отключения звука при запуске видео позволяет отключать или включать начальный звук видео.

Вызовите VideoOptions.Builder.setStartMuted() с boolean значением.

  • По умолчанию отключение звука включено.

  • Если эта функция отключена, приложение будет требовать, чтобы видео начиналось со звука.

  • Если эта функция включена, приложение попросит, чтобы видео начиналось с отключенным звуком.

В следующем примере показано, как запустить видео с включенным звуком.

Ява

VideoOptions videoOptions = new VideoOptions.Builder().setStartMuted(false).build();

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setVideoOptions(videoOptions).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Котлин

val videoOptions = VideoOptions.Builder().setStartMuted(false).build()

val nativeAdOptions = NativeAdOptions.Builder().setVideoOptions(videoOptions).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Пользовательские элементы управления воспроизведением

Это позволяет вам запрашивать пользовательские элементы управления видеовходом для воспроизведения, приостановки или отключения звука видео.

Вызовите VideoOptions.Builder.setCustomControlsRequested() с boolean значением.

  • Пользовательские элементы управления воспроизведением по умолчанию отключены.

  • Если этот параметр отключен, в вашем видео будут отображаться элементы управления вводом, созданные с помощью SDK.

Если в рекламе есть видеоконтент и включены пользовательские элементы управления, вам следует отображать их вместе с рекламой, поскольку сама реклама не будет отображать никаких элементов управления. Элементы управления могут вызывать соответствующие методы на

VideoController .

В следующем примере показано, как запросить видео с пользовательскими элементами управления воспроизведением.

Ява

VideoOptions videoOptions = new VideoOptions.Builder().setCustomControlsRequested(true).build();

NativeAdOptions nativeAdOptions =
    new NativeAdOptions.Builder().setVideoOptions(videoOptions).build();

AdLoader loader =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build();

Котлин

val videoOptions = VideoOptions.Builder().setCustomControlsRequested(true).build()

val nativeAdOptions = NativeAdOptions.Builder().setVideoOptions(videoOptions).build()

val loader = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(nativeAdOptions).build()

Проверьте, включены ли пользовательские элементы управления.

Поскольку на момент запроса неизвестно, будет ли возвращенное объявление позволять настраиваемые элементы управления видео, необходимо проверить, включены ли в нем настраиваемые элементы управления.

Ява

MediaContent mediaContent = nativeAd.getMediaContent();
if (mediaContent != null) {
  VideoController videoController = mediaContent.getVideoController();
  boolean canShowCustomControls = videoController.isCustomControlsEnabled();
}

Котлин

val mediaContent = nativeAd.mediaContent
if (mediaContent != null) {
  val videoController = mediaContent.videoController
  val canShowCustomControls = videoController.isCustomControlsEnabled
}

Рендеринг пользовательских элементов управления видео

Рендерите пользовательские элементы управления видео, используя следующие рекомендации:

  1. Отрисовывайте пользовательские элементы управления как дочерний элемент представления нативной рекламы. Такой подход позволяет при расчёте видимости Open Measurement учитывать пользовательские элементы управления как помеху.
  2. Избегайте отображения невидимого наложения поверх всего медиа-представления. Наложения блокируют клики по медиа-представлению, что негативно сказывается на эффективности нативной рекламы. Вместо этого создайте небольшое наложение, достаточно большое, чтобы поместить элементы управления.

Пользовательские жесты нажатия

Настраиваемые жесты нажатия — это функция нативной рекламы, которая позволяет регистрировать свайпы при просмотре рекламы как клики по рекламе. Она разработана для приложений, использующих свайпы для навигации по контенту. В этом руководстве показано, как включить настраиваемые жесты нажатия в нативной рекламе.

Вызовите NativeAdOptions.Builder.enableCustomClickGestureDirection() с NativeAdOptions.SwipeGestureDirection и boolean , чтобы указать, нужно ли разрешать нажатия как щелчки.

В следующем примере реализован пользовательский жест смахивания вправо с сохранением обычного поведения вкладки.

  • Пользовательские жесты нажатия по умолчанию отключены.

  • Если эта функция отключена, ваше приложение будет поддерживать обычное поведение нажатия.

  • Если эта функция включена, ваше приложение будет поддерживать пользовательские жесты смахивания.

В следующем примере реализован пользовательский жест смахивания вправо с сохранением обычного поведения вкладки.

Ява

NativeAdOptions adOptions =
    new NativeAdOptions.Builder()
        .enableCustomClickGestureDirection(
            NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT, /* tapsAllowed= */ true)
        .build();

// ca-app-pub-3940256099942544/2247696110 is a sample ad unit ID that has custom click
// gestures enabled.
AdLoader.Builder builder =
    new AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(adOptions);

Котлин

val adOptions =
  NativeAdOptions.Builder()
    .enableCustomClickGestureDirection(NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT, true)
    .build()

val builder = AdLoader.Builder(context, "AD_UNIT_ID").withNativeAdOptions(adOptions)

Прослушивание событий жестов смахивания

При регистрации нажатия жеста смахивания Google Mobile Ads SDK вызывает метод onAdSwipeGestureClicked() в AdListener в дополнение к существующему методу onAdClicked() .

Ява

AdLoader adLoader =
    new AdLoader.Builder(context, AD_UNIT_ID)
        .withAdListener(
            new AdListener() {
              // Called when a swipe gesture click is recorded.
              @Override
              public void onAdSwipeGestureClicked() {
                // Called when a swipe gesture click is recorded.
                Log.d(TAG, "A swipe gesture click has occurred.");
              }

              @Override
              public void onAdClicked() {
                // Called when a swipe gesture click or a tap click is recorded, as
                // configured in NativeAdOptions.
                Log.d(TAG, "A swipe gesture click or a tap click has occurred.");
              }
            })
        .build();

Котлин

val adLoader =
  AdLoader.Builder(context, AD_UNIT_ID)
    .withAdListener(
      object : AdListener() {
        override fun onAdSwipeGestureClicked() {
          // Called when a swipe gesture click is recorded.
          Log.d(TAG, "A swipe gesture click has occurred.")
        }

        override fun onAdClicked() {
          // Called when a swipe gesture click or a tap click is recorded, as
          // configured in NativeAdOptions.
          Log.d(TAG, "A swipe gesture click or a tap click has occurred.")
        }
      }
    )
    .build()

Медиация

Пользовательские жесты клика работают только с нативными объявлениями, которые отображает Google Mobile Ads SDK. Источники рекламы, для отображения которых требуются сторонние SDK , не поддерживают настройку пользовательских инструкций клика.