Ustawianie funkcji zaawansowanych

Reklamy natywne mają wiele zaawansowanych funkcji, które pozwalają na dodatkowe dostosowania i zapewnienie jak najlepszych wrażeń użytkownikom. Z tego przewodnika dowiesz się, jak korzystać z zaawansowanych funkcji reklam natywnych.

Wymagania wstępne

Ustawienia zasobów

W tej sekcji opisujemy, jak dostosować komponenty kreacji w reklamach natywnych. Możesz określić preferowany format obrazu komponentów multimedialnych oraz sposób pobierania i wyświetlania komponentów z obrazem.

Ustawienia preferowanego formatu obrazu multimediów

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

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

  • Jeśli nie ustawisz tego parametru, zwrócona reklama może mieć dowolny format obrazu multimediów.

  • Po ustawieniu tego parametru możesz poprawić wrażenia użytkownika, określając preferowany typ formatu obrazu.

Poniższy przykład instruuje pakiet SDK, 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.

Ustawienia pobierania obrazów

Ustawienia pobierania obrazów pozwalają określić, czy pakiet SDK ma zwracać komponenty z obrazem, czy tylko identyfikatory URI.

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

  • Ustawienia pobierania obrazów są domyślnie wyłączone.

  • Gdy ta opcja jest wyłączona, Google Mobile Ads SDK (Legacy) 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ć rzeczywiste obrazy według własnego uznania.

Poniższy przykład instruuje pakiet SDK, aby zwracał tylko identyfikator 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()

Ustawienia ładunku obrazu

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

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

  • Ustawienia ładunku obrazu są domyślnie wyłączone.

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

  • Gdy ta opcja jest włączona, Twoja aplikacja wskazuje, ż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 instruuje pakiet SDK, aby zwracał wiele komponentów z obrazem.

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 reklamy z oznaczeniem Informacja

W tej sekcji opisujemy, jak umieścić nakładkę Informacja. Możesz umieścić go w 1 z 4 rogów lub w niestandardowym widoku.

Ustawienia pozycji ikony Informacja

Ustawienie AdChoices o reklamach umożliwia wybranie rogu, w którym ma być renderowana ta ikona.

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

  • Jeśli nie ustawisz tego parametru, pozycja ikony Informacja zostanie ustawiona w prawym górnym rogu.

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

Przykład poniżej pokazuje, jak ustawić niestandardową pozycję obrazu Informacja.

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

Niestandardowy widok ikony Informacja

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

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

Poniższy przykład pokazuje, jak ustawić niestandardowy widok ikony Informacja, w którym ikona Informacja jest renderowana wewnątrz elementu 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

W tej sekcji opisujemy, jak dostosować odtwarzanie reklam wideo. Możesz ustawić początkowy stan wyciszenia i zaimplementować niestandardowe elementy sterujące odtwarzaniem.

Zachowanie na początku wyciszenia

Zachowanie na początku wyciszenia umożliwia wyłączenie lub włączenie dźwięku na początku filmu.

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

  • Zachowanie na początku wyciszenia jest domyślnie włączone.

  • Gdy ta opcja jest wyłączona, Twoja aplikacja żąda, aby film zaczynał się z dźwiękiem.

  • Gdy ta opcja jest włączona, Twoja aplikacja żąda, aby film zaczynał 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 poprosić o niestandardowe elementy sterujące odtwarzaniem, aby odtwarzać, wstrzymywać lub wyciszać film.

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

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

  • Gdy ta opcja jest wyłączona, film będzie zawierał elementy sterujące odtwarzaniem renderowane przez pakiet SDK.

Jeśli reklama zawiera treści wideo i włączone są niestandardowe elementy sterujące, należy wyświetlać 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.

Poniższy przykład pokazuje, jak poprosić o film 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ą elementy sterujące niestandardowe

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

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

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

  1. Renderuj widok elementów sterujących niestandardowych jako element podrzędny widoku reklamy natywnej. Dzięki temu obliczenia widoczności w otwartym pomiarze mogą uwzględniać elementy sterujące niestandardowe 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 jest wystarczająco duża, aby zmieścić elementy sterujące.

Gesty kliknięcia niestandardowego

Gesty kliknięcia niestandardowego to funkcja reklam natywnych, która umożliwia rejestrowanie przesunięć w widokach reklam jako kliknięć reklam. Działa w aplikacjach, które używają gestów przesuwania do nawigacji po treści. Z tego przewodnika dowiesz się, jak włączyć gesty kliknięcia niestandardowego w reklamach natywnych.

Wywołaj funkcję NativeAdOptions.Builder.enableCustomClickGestureDirection() z wartością NativeAdOptions.SwipeGestureDirection i wartością boolean, aby wskazać, czy zezwalać na kliknięcia.

  • Gesty kliknięcia niestandardowego są domyślnie wyłączone.

  • Gdy ta opcja jest wyłączona, Twoja aplikacja obsługuje normalne kliknięcia.

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

Poniższy przykład implementuje niestandardowy gest przesuwania w prawo i zachowuje normalne kliknięcia.

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 gestu przesuwania, Google Mobile Ads SDK (Legacy) wywoła metodę onAdSwipeGestureClicked() w AdListener oprócz dotychczasowej metody 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

Gesty kliknięcia niestandardowego 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 innych firm, nie reagują na ustawienie kierunków kliknięć niestandardowych.