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 zasobó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.

W poniższym przykładzie pakiet SDK otrzymuje instrukcję, 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.

Zarządzanie pobieraniem 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 pozwala na pobieranie rzeczywistych obrazów 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()

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 udostępniał tylko pierwszy obraz w przypadku komponentów zawierających serię.

  • 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ć sposób odtwarzania reklam wideo. Możesz ustawić początkowy stan wyciszenia i wdrożyć niestandardowe elementy sterujące odtwarzaniem.

Zachowanie na początku wyciszenia

Opcja wyciszenia na początku pozwala wyłączyć lub włączyć dźwięk na początku filmu.

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

  • Domyślnie funkcja wyciszania na początku jest włączona.

  • Gdy ta opcja jest wyłączona, aplikacja żąda, 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.

Z przykładu poniżej dowiesz się, 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.

Przykład poniżej 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 mogą 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 pomieścić 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 ta opcja 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 dojazdu po kliknięciu.