Как настроить расширенные функции

Выберите платформу: Android iOS Android (устаревшая версия)

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

Требования

Настройки объектов

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

Настройки соотношения сторон

Настройки соотношения сторон медиаконтента позволяют задать предпочтительное соотношение сторон креативов.

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

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

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

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

Java

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();

Kotlin

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 идентификатором рекламного блока.

Управление скачиванием изображений

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

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

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

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

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

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

Java

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();

Kotlin

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 получает инструкции вернуть несколько объектов изображений.

Java

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

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

Kotlin

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

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

Места размещения значка "Выбор рекламы"

В этом разделе рассказывается, как разместить оверлей AdChoices. Вы можете разместить его в одном из четырех углов экрана или в специальном представлении.

Настройки положения значка "Выбор рекламы"

Позиция AdChoices позволяет выбрать угол, в котором будет показываться значок "Выбор рекламы".

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

  • Если значение не задано, значок "Выбор рекламы" будет размещен в правом верхнем углу.

  • Если задано, значок "Выбор рекламы" размещается в указанном месте.

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

Java

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

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

Kotlin

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

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

Специальный режим просмотра AdChoices

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

Вызовите функцию NativeAdView.setAdChoicesView() со значением AdChoicesView.

В приведенном ниже примере показано, как задать специальный вид значка "Выбор рекламы", который будет отрисовываться внутри элемента AdChoicesView.

Java

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

Kotlin

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

Управление воспроизведением

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

Поведение при запуске без звука

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

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

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

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

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

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

Java

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();

Kotlin

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.

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

Java

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();

Kotlin

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()

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

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

Java

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

Kotlin

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, чтобы указать, следует ли считать нажатия кликами.

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

  • Если она отключена, приложение поддерживает обычное поведение при клике.

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

В примере ниже реализован специальный жест пролистывания вправо, при этом сохраняется обычное поведение при нажатии.

Java

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);

Kotlin

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 (Legacy) вызывает метод onAdSwipeGestureClicked() в AdListener в дополнение к существующему методу onAdClicked().

Java

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();

Kotlin

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, не реагируют на настройки специальных инструкций по кликам.