Opcje reklam natywnych

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 komponentów

W tej sekcji znajdziesz szczegółowe informacje o tym, jak dostosować komponenty kreacji w reklamach natywnych. Możesz określić preferowany format komponentów z multimediami oraz sposób pobierania i wyświetlania komponentów z obrazami.

Elementy sterujące preferowanym formatem obrazu

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

Wywołaj funkcję NativeAdRequest.Builder.setMediaAspectRatio() z wartością NativeAd.NativeMediaAspectRatio.

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

  • Po ustawieniu tej wartości możesz poprawić wrażenia użytkowników, określając preferowany typ proporcji.

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

Kotlin

val adRequest = NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build()

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build();

Sterowanie pobieraniem obrazów

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

Zadzwoń pod numer NativeAdRequest.Builder.disableImageDownloading().

  • Sterowanie pobieraniem obrazów jest domyślnie wyłączone.

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

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

W tym przykładzie pakiet SDK ma zwrócić tylko URI.

Kotlin

val adRequest = NativeAdRequest.Builder(
    "ca-app-pub-3940256099942544/2247696110",
    listOf(NativeAd.NativeAdType.NATIVE))
    .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
    .disableImageDownloading()
    .build()

val adCallback: NativeAdLoaderCallback =
  object : NativeAdLoaderCallback {
    override fun onNativeAdLoaded(nativeAd: NativeAd) {
      // Get the image uri.
      val imageUri = nativeAd.image?.uri
    }
  };

// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .disableImageDownloading()
  .build();

NativeAdLoaderCallback adLoaderCallback =
  new NativeAdLoaderCallback() {
    @Override
    public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
      // Get the image uri.
      Uri imageUri = nativeAd.getImage().getUri();
    }
  };

// Load the native ad with the ad request and callback.
NativeAdLoader.load(adRequest, adLoaderCallback);

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 przygotowana do wyświetlania wszystkich obrazów, czy tylko jednego.

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

  • Gdy ta opcja jest wyłączona, aplikacja instruuje pakiet SDK, aby w przypadku komponentów zawierających serię udostępniał 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.

Miejsca docelowe reklam z oznaczeniem Informacja

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

Ustawienia pozycji informacji

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

Wywołaj funkcję NativeAdRequest.Builder.setAdChoicesPlacement() z wartością NativeAdRequest.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.

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

Kotlin

val adRequest = NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .build()

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .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 pozwalają określić tylko jeden 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.

Kotlin

override fun onNativeAdLoaded(nativeAd: NativeAd) {
  val nativeAdView = NativeAdView(applicationContext)
  val adChoicesView = AdChoicesView(this)
  nativeAdView.adChoicesView = adChoicesView
}

Java

public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
  NativeAdView nativeAdView = new NativeAdView(getApplicationContext());
  AdChoicesView adChoicesView = new AdChoicesView(this);
  nativeAdView.setAdChoicesView(adChoicesView);
}

Sterowanie odtwarzaniem

W tej sekcji znajdziesz szczegółowe informacje o tym, 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 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 i wywołaj funkcję NativeAdOptions.Builder.setVideoOptions().

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

  • 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.

Kotlin

val videoOptions = VideoOptions.Builder()
  .setStartMuted(false)
  .build()

val adRequest = NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Java

VideoOptions videoOptions = VideoOptions.Builder()
  .setStartMuted(false)
  .build()

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .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.

Aby ustawić początkowy stan wyciszenia reklam, wywołaj funkcję VideoOptions.Builder.setCustomControlsRequested().

  • 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. Kontrolki mogą następnie wywoływać odpowiednie metody w obiekcie

VideoOptions.Builder.setCustomControlsRequested().

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

Kotlin

val videoOptions: VideoOptions.Builder()
  .setCustomControlsRequested(true)
  .build()

val adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Java

VideoOptions VideoOptions = VideoOptions.Builder()
  .setCustomControlsRequested(true)
  .build()

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .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.

Kotlin

  val adCallback: NativeAdLoaderCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        val mediaContent = nativeAd.mediaContent;
        if (mediaContent != null) {
          val videoController = mediaContent.videoController;
          val canShowCustomControls = videoController?.isCustomControlsEnabled();
        }
      }
    };

Java

NativeAdLoaderCallback adCallback =
  new NativeAdLoaderCallback() {
    @Override
    public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
      MediaContent mediaContent = nativeAd.getMediaContent();
      if (mediaContent != null) {
        VideoController videoController = mediaContent.getVideoController();
        if (videoController != null) {
          boolean 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 niestandardowych jako element podrzędny widoku reklamy natywnej. Dzięki temu obliczenia widoczności w otwartym pomiarze mogą traktować 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ć 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. Został on zaprojektowany do współpracy z aplikacjami, które do nawigacji po treściach wykorzystują gesty przesuwania. Z tego przewodnika dowiesz się, jak włączyć w reklamach natywnych niestandardowe gesty kliknięcia.

Wywołaj funkcję NativeAdRequest.Builder.enableCustomClickGestureDirection() z wartością NativeAd.SwipeGestureDirection i wartością boolean.

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.

Kotlin

val adOptions = NativeAdOptions
  .Builder()
  .enableCustomClickGestureDirection(
    /* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
    /* tapsAllowed= */ true)
  .build();

// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
val adRequest = NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  listOf(NativeAd.NativeAdType.NATIVE))
  .withNativeAdOptions(adOptions)
  .build();

Java

NativeAdOptions adOptions = new NativeAdOptions
  .Builder()
  .enableCustomClickGestureDirection(
    /* swipeDirection */ NativeAdOptions.SWIPE_GESTURE_DIRECTION_RIGHT,
    /* tapsAllowed= */ true)
  .build();

// The following sample ad unit ID has been enabled for custom click gestures
// and can be used for testing.
NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "ca-app-pub-3940256099942544/2247696110",
  List.of(NativeAd.NativeAdType.NATIVE))
  .withNativeAdOptions(adOptions)
  .build();

Nasłuchiwanie zdarzeń gestu przesuwania

Aby nasłuchiwać zdarzeń gestu przesuwania, wywołaj NativeAd.setAdEventCallback()NativeAdEventCallback i zaimplementuj metodę onAdSwipeGestureClicked().

Kotlin

  val adCallback: NativeAdLoaderCallback =
    object : NativeAdLoaderCallback {
      override fun onNativeAdLoaded(nativeAd: NativeAd) {
        // Implement the onAdSwipeGestureClicked() method.
        val nativeAdCallback: NativeAdEventCallback = object : NativeAdEventCallback {
          override fun onAdSwipeGestureClicked() {
            // A swipe gesture click has occurred.
          }
        }
      }
    }
  // Load the native ad with the ad request and callback.
  NativeAdLoader.load(adRequest, adCallback)

Java

  NativeAdLoaderCallback adCallback =
    new NativeAdLoaderCallback() {
      @Override
      public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {
        // Implement the onAdSwipeGestureClicked() method.
        NativeAdEventCallback nativeAdCallback = new NativeAdEventCallback() {
          @Override
          public void onAdSwipeGestureClicked() {
            // A swipe gesture click has occurred.
          }
        };
      }
    };
  // Load the native ad with the ad request and callback.
  NativeAdLoader.load(adRequest, adCallback);

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ęć.