Ustawianie funkcji zaawansowanych

Reklamy natywne mają wiele funkcji zaawansowanych, które umożliwiają dodatkowe dostosowywanie i zapewniają najlepszą możliwą jakość reklamy. Z tego przewodnika dowiesz się, jak korzystać z funkcji zaawansowanych reklam natywnych.

Wymagania wstępne

Ustawienia komponentów

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

Elementy sterujące preferowanym formatem obrazu multimediów

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

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

  • Jeśli nie skonfigurujesz tego parametru, 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 formatu obrazu.

Poniższy przykład instruuje pakiet SDK, aby preferował zwracany obraz lub film o określonym formacie.

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

Kontrola pobierania obrazów pozwala zdecydować, czy pakiet SDK ma zwracać komponenty z obrazem czy tylko identyfikatory URI.

Wywołaj 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 umożliwia pobieranie rzeczywistych obrazów według własnego uznania.

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

Zarządzanie zestawem danych obrazu

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

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

  • Zarządzanie zestawem danych obrazu jest domyślnie wyłączone.

  • Gdy ta opcja jest wyłączona, 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, aplikacja wskazuje, że jest gotowa do wyświetlania wszystkich obrazów w przypadku komponentów, które mają ich więcej niż 1.

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 Informacja umożliwia wybranie rogu, w którym ma być renderowana ta ikona.

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

  • Jeśli nie jest ustawiona, ikona Informacja jest umieszczana 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()

Widok niestandardowy 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 NativeAdView.setAdChoicesView() z wartością AdChoicesView.

Poniższy przykład pokazuje, jak ustawić niestandardowy widok ikony Informacja, która jest renderowana w widoku 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 wdrożyć niestandardowe elementy sterujące odtwarzaniem.

Zachowanie na początku wyciszenia

Opcja „Rozpocznij wyciszony” umożliwia wyłączenie lub włączenie dźwięku na początku filmu.

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

  • Domyślnie wyciszenie na początku jest włączone.

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

  • Gdy ta opcja jest włączona, aplikacja wysyła żądanie, 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, wstrzymywaniem lub wyciszaniem filmu.

Wywołaj 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ą wyświetlane 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ś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 wysłać żądanie reklamy wideo 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 ustawienia niestandardowe są włączone

Ponieważ w momencie wysyłania żądania nie wiadomo, czy zwrócona reklama będzie zezwalać na niestandardowe elementy sterujące, 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

Aby renderować niestandardowe elementy sterujące odtwarzaniem wideo, postępuj zgodnie z tymi sprawdzonymi metodami:

  1. Wyrenderuj widok elementów sterujących jako element podrzędny widoku reklamy natywnej. Dzięki temu obliczenia widoczności w ramach Open Measurement będą uwzględniać niestandardowe elementy sterujące jako przyjazne przeszkody.
  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ły się w niej elementy sterujące.

Gesty kliknięć niestandardowych

Niestandardowe gesty kliknięcia to funkcja reklam natywnych, która umożliwia rejestrowanie przesunięć palcem po wyświetleniach reklam jako kliknięć reklam. Działa z aplikacjami, które używają gestów przesuwania do poruszania się po treściach. Z tego przewodnika dowiesz się, jak włączyć niestandardowe gesty kliknięcia w reklamach natywnych.

Wywołaj NativeAdOptions.Builder.enableCustomClickGestureDirection() z NativeAdOptions.SwipeGestureDirection i boolean, aby określić, czy zezwalać na kliknięcia przez dotknięcie.

  • Gesty kliknięć niestandardowych są domyślnie wyłączone.

  • Gdy jest wyłączona, aplikacja obsługuje normalne zachowanie kliknięć.

  • Po włączeniu tej opcji aplikacja obsługuje niestandardowe gesty przesuwania.

W przykładzie poniżej implementujemy niestandardowy gest przesunięcia w prawo i zachowujemy normalne działanie 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 przesunięcia

Gdy zostanie zarejestrowane kliknięcie gestem przesunięcia, Google Mobile Ads SDK (Legacy) wywołuje 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

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 innych firm, nie reagują na ustawienie niestandardowych wskazówek dotyczących kliknięć.