Opcje reklam natywnych

Wybierz platformę: Android iOS

Reklamy natywne mają wiele zaawansowanych funkcji, które umożliwiają wprowadzanie dodatkowych dostosowań i zapewniają najlepsze możliwe wrażenia związane z reklamą. Z tego przewodnika dowiesz się, jak korzystać z zaawansowanych funkcji reklam natywnych.

Wymagania wstępne

Ustawienia zasobów

Skonfiguruj ustawienia komponentów reklamy natywnej.

Ustawienia preferowanego formatu obrazu

Elementy sterujące formatem obrazu multimediów umożliwiają określenie preferowanego formatu obrazu kreacji reklamowych.

Wywołaj funkcję NativeAdOptions.Builder.setMediaAspectRatio() z wartością NativeAdOptions.MediaAspectRatio.

  • Jeśli ten parametr nie jest ustawiony, zwrócona reklama może mieć dowolny format obrazu.

  • Po ustawieniu tego parametru możesz poprawić wrażenia użytkownika, określając preferowany typ współczynnika proporcji.

W tym przykładzie pakiet SDK otrzymuje instrukcję, aby preferować zwracanie obrazu lub filmu o określonym formacie obrazu.

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

Zastąp AD_UNIT_ID identyfikatorem jednostki reklamowej.

Kontrola pobierania obrazów

Ustawienie kontroli pobierania obrazów pozwala określić, czy pakiet SDK ma zwracać komponenty z obrazem, czy tylko identyfikatory URI.

Wywołaj funkcję NativeAdOptions.Builder.setReturnUrlsForImageAssets() z wartością boolean.

  • Kontrola pobierania obrazów jest domyślnie wyłączona.

  • Gdy ta opcja jest wyłączona, pakiet SDK do reklam mobilnych Google wypełnia zarówno obraz, jak i identyfikator URI.

  • Gdy ta opcja jest włączona, pakiet SDK wypełnia tylko identyfikator URI, co pozwala pobierać obrazy według własnego uznania.

W tym przykładzie pakiet SDK ma zwrócić tylko 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()

Elementy sterujące ładunkiem obrazu

Niektóre reklamy zawierają serię obrazów, a nie tylko jeden. Użyj tej funkcji, aby określić, czy aplikacja jest gotowa do wyświetlania wszystkich obrazów, czy tylko jednego.

Wywołaj funkcję NativeAdOptions.Builder.setRequestMultipleImages() z wartością boolean.

  • Elementy sterujące danymi obrazu są domyślnie wyłączone.

  • Gdy ta opcja jest wyłączona, aplikacja instruuje pakiet SDK, aby w przypadku komponentów zawierających serię obrazów podawał tylko pierwszy obraz.

  • Gdy ta opcja jest włączona, aplikacja informuje, że jest gotowa do wyświetlania wszystkich obrazów w przypadku komponentów, które mają więcej niż 1 obraz.

Poniższy przykład zawiera instrukcję dla pakietu SDK, aby zwracał wiele zasobów obrazów.

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

Miejsca docelowe reklam z oznaczeniem Informacja

Dostosuj wyświetlanie ikony Informacja.

Ustawienia pozycji informacji

Ustawienia pozycji ikony Informacja umożliwiają wybór rogu, w którym ma być renderowana ikona Informacja.

Wywołaj funkcję NativeAdOptions.Builder.setAdChoicesPlacement() z wartością NativeAdOption.AdChoicesPlacement.

  • Jeśli nie jest ustawiona, pozycja ikony Informacja jest ustawiona w prawym górnym rogu.

  • Jeśli jest ustawiona, ikona AdChoices jest umieszczana w niestandardowym miejscu zgodnie z żądaniem.

Ten przykład pokazuje, jak ustawić niestandardową pozycję obrazu 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()

Widok niestandardowy Informacji

Funkcja niestandardowego widoku Informacja umożliwia umieszczenie ikony Informacja w niestandardowym miejscu. Różni się to od ustawień pozycji AdChoices, które umożliwiają określenie tylko jednego z 4 rogów.

Wywołaj funkcję NativeAdView.setAdChoicesView() z wartością AdChoicesView.

Ten przykład pokazuje, jak ustawić niestandardowy widok ikony Informacja, w którym ikona jest renderowana w 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

Sterowanie odtwarzaniem

Skonfiguruj działanie komponentu wideo.

Zachowanie na początku ignorowania

Funkcja rozpoczęcia z wyciszonym dźwiękiem umożliwia włączanie i wyłączanie dźwięku na początku filmu.

Wywołaj funkcję VideoOptions.Builder.setStartMuted() z wartością boolean.

  • Domyślnie włączone jest zachowanie „rozpocznij z wyciszonym dźwiękiem”.

  • Gdy ta opcja jest wyłączona, aplikacja wysyła żądanie, aby odtwarzanie filmu rozpoczęło się od dźwięku.

  • Gdy ta opcja jest włączona, aplikacja wysyła żądanie, aby odtwarzanie filmu rozpoczęło się z wyciszonym dźwiękiem.

Poniższy przykład pokazuje, jak rozpocząć odtwarzanie filmu z włączonym dźwiękiem.

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

Niestandardowe elementy sterujące odtwarzaniem

Dzięki temu możesz wysyłać żądania niestandardowych elementów sterujących odtwarzaniem wideo, aby odtwarzać, wstrzymywać lub wyciszać film.

Wywołaj funkcję VideoOptions.Builder.setCustomControlsRequested() z wartością boolean.

  • Niestandardowe elementy sterujące odtwarzaniem są domyślnie wyłączone.

  • Gdy ta opcja jest wyłączona, w filmie będą widoczne elementy sterujące renderowane przez pakiet SDK.

Jeśli reklama zawiera treści wideo i włączone są niestandardowe elementy sterujące, należy wyświetlić je razem z reklamą, ponieważ sama reklama nie będzie zawierać żadnych elementów sterujących. Elementy sterujące mogą następnie wywoływać odpowiednie metody w 

VideoController.

W przykładzie poniżej pokazujemy, jak wysłać żądanie dotyczące filmu z niestandardowymi elementami sterującymi odtwarzaniem.

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

Sprawdzanie, czy włączone są niestandardowe elementy sterujące

Ponieważ w momencie wysłania żądania nie wiadomo, czy zwrócona reklama będzie umożliwiać korzystanie z niestandardowych elementów sterujących odtwarzaniem wideo, musisz sprawdzić, czy ma ona włączone niestandardowe elementy sterujące.

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
}

Renderowanie niestandardowych elementów sterujących odtwarzaniem wideo

Renderuj niestandardowe elementy sterujące odtwarzaniem wideo, korzystając z tych sprawdzonych metod:

  1. Wyrenderuj widok elementów sterujących jako element podrzędny widoku reklamy natywnej. Dzięki temu obliczenia widoczności w ramach pomiaru otwartego mogą traktować elementy sterujące jako przyjazną przeszkodę.
  2. Unikaj renderowania niewidocznej nakładki na całym widoku multimediów. Nakładki blokują kliknięcia w widoku multimediów, co negatywnie wpływa na skuteczność reklam natywnych. Zamiast tego utwórz małą nakładkę, która będzie wystarczająco duża, aby zmieścić elementy sterujące.

Gesty kliknięć niestandardowych

Niestandardowe gesty kliknięcia to funkcja reklam natywnych, która umożliwia rejestrowanie przesunięć w widokach reklam jako kliknięć reklam. Jest ona przeznaczona do współpracy z aplikacjami, które do nawigacji po treściach używają gestów przesuwania. Z tego przewodnika dowiesz się, jak włączyć w reklamach natywnych niestandardowe gesty kliknięcia.

Wywołaj NativeAdOptions.Builder.enableCustomClickGestureDirection() z wartością NativeAdOptions.SwipeGestureDirection i wartością boolean, aby określić, czy kliknięcia mają być dozwolone jako kliknięcia.

W przykładzie poniżej zaimplementowano niestandardowy gest przesuwania w prawo, który zachowuje normalne działanie kart.

  • Niestandardowe gesty kliknięcia są domyślnie wyłączone.

  • Gdy ta opcja jest wyłączona, aplikacja obsługuje normalne klikanie.

  • Gdy ta opcja jest włączona, aplikacja obsługuje niestandardowe gesty przesuwania.

W przykładzie poniżej zaimplementowano niestandardowy gest przesuwania w prawo, który zachowuje normalne działanie kart.

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)

Nasłuchiwanie zdarzeń gestu przesuwania

Gdy zostanie zarejestrowane kliknięcie gestem przesuwania, pakiet SDK do reklam mobilnych Google wywoła metodę onAdSwipeGestureClicked() w obiekcie AdListener, a także dotychczasową metodę 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()

Mediacja

Niestandardowe gesty kliknięcia działają tylko w przypadku reklam natywnych renderowanych przez pakiet SDK do reklam mobilnych Google. Źródła reklam, które do renderowania wymagają pakietów SDK firm zewnętrznych, nie reagują na ustawienie niestandardowych kierunków kliknięć.