Opzioni per gli annunci nativi

Gli annunci nativi hanno molte funzionalità avanzate che ti consentono di apportare personalizzazioni aggiuntive e creare la migliore esperienza pubblicitaria possibile. Questa guida mostra come utilizzare le funzionalità avanzate degli annunci nativi.

Prerequisiti

Controlli degli asset

Questa sezione descrive in dettaglio come personalizzare gli asset delle creatività negli annunci nativi. Hai la possibilità di specificare un formato preferito per gli asset multimediali e la modalità di download e visualizzazione degli asset immagine.

Controlli delle proporzioni dei contenuti multimediali preferiti

I controlli delle proporzioni dei contenuti multimediali ti consentono di specificare una preferenza per le proporzioni delle creatività pubblicitarie.

Chiama NativeAdRequest.Builder.setMediaAspectRatio() con un valore NativeAd.NativeMediaAspectRatio.

  • Se non è impostato, l'annuncio restituito può avere qualsiasi formato multimediale.

  • Se impostato, potrai migliorare l'esperienza utente specificando il tipo di aspect ratio preferito.

L'esempio seguente indica all'SDK di preferire un'immagine o un video di ritorno con proporzioni specifiche.

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

Controllo del download delle immagini

Il controllo del download delle immagini ti consente di decidere se l'SDK deve restituire gli asset immagine o solo gli URI.

Chiama il numero NativeAdRequest.Builder.disableImageDownloading().

  • Il controllo del download delle immagini è disattivato per impostazione predefinita.

  • Se disattivato, l'SDK Google Mobile Ads (beta) compila sia l'immagine sia l'URI.

  • Se abilitato, l'SDK compila solo l'URI, consentendoti di scaricare le immagini effettive a tua discrezione.

Il seguente esempio indica all'SDK di restituire solo l'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);

Controlli del payload dell'immagine

Alcuni annunci hanno una serie di immagini anziché una sola. Utilizza questa funzionalità per indicare se la tua app è pronta a visualizzare tutte le immagini o solo una.

  • I controlli del payload dell'immagine sono disattivati per impostazione predefinita.

  • Se disattivata, l'app indica all'SDK di fornire solo la prima immagine per gli asset che contengono una serie.

  • Se attivata, la tua app indica di essere pronta a visualizzare tutte le immagini per gli asset che ne hanno più di una.

L'esempio seguente indica all'SDK di restituire più asset immagine.

Posizionamenti di Scegli Tu!

Questa sezione descrive in dettaglio come posizionare l'overlay AdChoices. Hai la possibilità di impostare il posizionamento in uno dei quattro angoli o di eseguirne il rendering all'interno di una visualizzazione personalizzata.

Controlli della posizione di Scegli Tu!

I controlli della posizione di Scegli Tu! ti consentono di scegliere in quale angolo visualizzare l'icona Scegli Tu!.

Chiama NativeAdRequest.Builder.setAdChoicesPlacement() con un valore NativeAdRequest.AdChoicesPlacement.

  • Se non impostata, la posizione dell'icona Scegli Tu! è in alto a destra.

  • Se impostato, AdChoices viene posizionato nella posizione personalizzata come richiesto.

L'esempio seguente mostra come impostare una posizione personalizzata per l'immagine 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();

Visualizzazione personalizzata di Scegli Tu!

La funzionalità di visualizzazione personalizzata Scegli Tu! ti consente di posizionare l'icona Scegli Tu! in una posizione personalizzata. Questi controlli sono diversi da quelli per la posizione di Scelte pubblicitarie, che consentono di specificare solo uno dei quattro angoli.

Chiama NativeAdView.setAdChoicesView() con un valore AdChoicesView.

L'esempio seguente mostra come impostare una visualizzazione personalizzata di Scegli Tu!, con l'icona Scegli Tu! visualizzata all'interno di 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);
}

Comandi video

Questa sezione descrive in dettaglio come personalizzare l'esperienza di riproduzione per gli annunci video. Hai la possibilità di impostare lo stato di disattivazione audio iniziale e implementare controlli di riproduzione personalizzati.

Avvia comportamento di disattivazione

Il comportamento di avvio con audio disattivato ti consente di disattivare o attivare l'audio iniziale di un video.

Chiama VideoOptions.Builder.setStartMuted() con un valore boolean e chiama NativeAdOptions.Builder.setVideoOptions().

  • Il comportamento di avvio con audio disattivato è attivo per impostazione predefinita.

  • Se disattivata, l'app richiede che il video inizi con l'audio.

  • Se attivata, l'app richiede che la riproduzione del video inizi con l'audio disattivato.

L'esempio seguente mostra come avviare il video con l'audio riattivato.

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

Controlli di riproduzione personalizzati

In questo modo, puoi richiedere controlli di input video personalizzati per riprodurre, mettere in pausa o disattivare l'audio del video.

Per impostare lo stato di disattivazione dell'audio iniziale degli annunci, chiama VideoOptions.Builder.setCustomControlsRequested().

  • I controlli di riproduzione personalizzati sono disattivati per impostazione predefinita.

  • Se disattivata, il video mostrerà i controlli di input visualizzati dall'SDK.

Se l'annuncio include contenuti video e i controlli personalizzati sono attivati, devi visualizzare i controlli personalizzati insieme all'annuncio, in quanto l'annuncio non mostra alcun controllo. I controlli possono quindi chiamare i metodi pertinenti sul

VideoOptions.Builder.setCustomControlsRequested().

L'esempio seguente mostra come richiedere un video con controlli di riproduzione personalizzati.

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

Controllare se i controlli personalizzati sono attivi

Poiché al momento della richiesta non è noto se l'annuncio restituito consentirà controlli video personalizzati, devi verificare se questi sono attivati.

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

Visualizzare i controlli video personalizzati

Visualizza i controlli video personalizzati utilizzando le seguenti best practice:

  1. Esegui il rendering della visualizzazione dei controlli personalizzati come elemento secondario della visualizzazione dell'annuncio nativo. Questo approccio consente ai calcoli della visibilità di Open Measurement di considerare i controlli personalizzati come un'ostruzione amichevole.
  2. Evita di eseguire il rendering di una sovrapposizione invisibile sull'intera visualizzazione dei contenuti multimediali. Le overlay bloccano i clic sulla visualizzazione dei contenuti multimediali, influendo negativamente sul rendimento degli annunci nativi. Crea invece una piccola sovrapposizione abbastanza grande da contenere i controlli.

Gesti di clic personalizzati

I gesti di clic personalizzati sono una funzionalità degli annunci nativi che consente di registrare gli scorrimenti sulle visualizzazioni degli annunci come clic sugli annunci. È progettato per funzionare con le app che utilizzano i gesti di scorrimento per la navigazione dei contenuti. Questa guida mostra come attivare i gesti di clic personalizzati sui tuoi annunci nativi.

Chiama NativeAdRequest.Builder.enableCustomClickGestureDirection() con un NativeAd.SwipeGestureDirection e un valore boolean.

L'esempio seguente implementa un gesto di scorrimento personalizzato verso destra e mantiene il normale comportamento delle schede.

  • I gesti di clic personalizzati sono disattivati per impostazione predefinita.

  • Se disattivata, l'app supporterà il normale comportamento di clic.

  • Se abilitata, l'app supporterà i gesti di scorrimento personalizzati.

L'esempio seguente implementa un gesto di scorrimento personalizzato verso destra e mantiene il normale comportamento delle schede.

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

Ascolta gli eventi di scorrimento

Per ascoltare gli eventi dei gesti di scorrimento, chiama NativeAd.setAdEventCallback() con un NativeAdEventCallback e implementa il metodo 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);

Mediazione

I gesti di clic personalizzati funzionano solo sugli annunci nativi di cui esegue il rendering l'SDK Google Mobile Ads. Le origini annuncio che richiedono SDK di terze parti per il rendering non rispondono all'impostazione delle indicazioni personalizzate per i clic.