Konfigurowanie zaawansowanych funkcji reklam natywnych

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 NativeAdRequest.Builder.setMediaAspectRatio() z wartością NativeAd.NativeMediaAspectRatio.

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

Kotlin

val adRequest = NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build()

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setMediaAspectRatio(NativeAd.NATIVE_MEDIA_ASPECT_RATIO_LANDSCAPE)
  .build();

Kontrola pobierania obrazów

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

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

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

  • Gdy ta opcja jest wyłączona, GMA Next-Gen SDK 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.

Kotlin

val adRequest = NativeAdRequest.Builder(
    "/21775744923/example/native",
    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(
  "/21775744923/example/native",
  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);

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.

  • 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 przygotowana do wyświetlania wszystkich obrazów w przypadku komponentów, które mają więcej niż 1 obraz.

Poniższy przykład pokazuje, jak poinstruować pakiet SDK, aby zwracał wiele komponentów z obrazem.

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 NativeAdRequest.Builder.setAdChoicesPlacement() z wartością NativeAdRequest.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.

Kotlin

val adRequest = NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .build()

Java

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setAdChoicesPlacement(NativeAdOptions.ADCHOICES_BOTTOM_RIGHT)
  .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.

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 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 i wywołaj NativeAdOptions.Builder.setVideoOptions().

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

Kotlin

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

val adRequest = NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Java

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

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Niestandardowe elementy sterujące odtwarzaniem

Dzięki temu możesz poprosić o niestandardowe elementy sterujące odtwarzaniem, wstrzymywaniem i wyciszaniem filmu.

Aby ustawić początkowy stan wyciszenia reklam, wywołaj metodę 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. Elementy sterujące mogą następnie wywoływać odpowiednie metody w 

VideoOptions.Builder.setCustomControlsRequested().

Poniższy przykład pokazuje, jak wysłać żądanie reklamy wideo z niestandardowymi elementami sterującymi odtwarzaniem.

Kotlin

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

val adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  listOf(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .build()

Java

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

NativeAdRequest adRequest = new NativeAdRequest.Builder(
  "/21775744923/example/native",
  List.of(NativeAd.NativeAdType.NATIVE))
  .setVideoOptions(videoOptions)
  .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.

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

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 NativeAdRequest.Builder.enableCustomClickGestureDirection() z NativeAd.SwipeGestureDirection i wartością boolean.

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

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

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

Kotlin

val adRequest =
  NativeAdRequest.Builder(AD_UNIT_ID, listOf(NativeAdType.NATIVE))
    .enableCustomClickGestureDirection(
      SwipeGestureDirection.RIGHT,
      /* customClickGestureAllowTaps= */ true,
    )
    .build()

Java

NativeAdRequest adRequest =
    new NativeAdRequest.Builder(AD_UNIT_ID, List.of(NativeAdType.NATIVE))
        .enableCustomClickGestureDirection(
            SwipeGestureDirection.RIGHT, /* customClickGestureAllowTaps= */ true)
        .build();

Nasłuchiwanie zdarzeń gestu przesunięcia

Aby nasłuchiwać zdarzeń gestu przesunięcia, wywołaj NativeAd.setAdEventCallback() z 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 innych firm, nie reagują na ustawienie niestandardowych wskazówek dojazdu po kliknięciu.