Configurare gli annunci banner

Gli annunci banner sono annunci rettangolari che occupano una parte del layout di un'app. I banner adattivi ancorati sono annunci con proporzioni fisse che rimangono sullo schermo durante l'interazione degli utenti con l'app, ancorati nella parte superiore o inferiore dello schermo.

Questa guida illustra come caricare un annuncio banner adattivo ancorato in un'app per Android.

Prerequisiti

Esegui sempre i test con gli annunci di prova

Quando crei e testi le tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione. In caso contrario, il tuo account potrebbe essere sospeso.

Il modo più semplice per caricare gli annunci di prova è utilizzare l'ID unità pubblicitaria di prova dedicato per i banner Android:

/21775744923/example/adaptive-banner

È stato configurato appositamente per restituire annunci di prova per ogni richiesta e puoi utilizzarlo nelle tue app durante la codifica, i test e il debug. Assicurati di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare l'app.

Per ulteriori informazioni sul funzionamento degli annunci di prova Google Mobile Ads SDK, consulta la pagina Attivare gli annunci di prova.

Definisci la visualizzazione di annuncio

Layout XML

Aggiungi una visualizzazione al file XML del layout che funga da contenitore per l'annuncio banner adattivo ancorato:

<!-- Ad view container that fills the width of the screen and adjusts its
    height to the content of the ad. -->
<FrameLayout
        android:id="@+id/ad_view_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_alignParentBottom="true" />

Jetpack Compose

  1. Includi la cartella JetpackCompose Utilities. Questa cartella include helper per comporre l'oggetto AdView e gli asset.

  2. Componi un AdView:


// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

Imposta le dimensioni dell'annuncio

Imposta AdSize su un tipo di banner adattivo ancorato con una larghezza specificata:

Java


// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

Kotlin


// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

Aggiungi AdManagerAdView al layout

Crea un AdManagerAdView utilizzando le dimensioni dell'annuncio da aggiungere al layout dell'app:

Java


// Create a new ad view.
adView = new AdManagerAdView(this);
adView.setAdUnitId(AD_UNIT);
// Request an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360));

// Replace ad container with new ad view.
adContainerView.removeAllViews();
adContainerView.addView(adView);

Kotlin


// Create a new ad view.
val adView = AdManagerAdView(this)
adView.adUnitId = AD_UNIT_ID
// Request a large anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getLargeAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

// Replace ad container with new ad view.
binding.adViewContainer.removeAllViews()
binding.adViewContainer.addView(adView)

Jetpack Compose


val adView = remember { AdManagerAdView(context) }

// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANAGER_ADAPTIVE_BANNER_AD_UNIT_ID

// Set a large anchored adaptive banner ad size with a given width.
val adSize = AdSize.getLargeAnchoredAdaptiveBannerAdSize(LocalContext.current, 360)
adView.setAdSize(adSize)

// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
  Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(adView, modifier) }
}

Carica un annuncio

Il seguente esempio carica un annuncio banner adattivo ancorato con larghezza 360 in un oggetto AdManagerAdView:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);

Kotlin

val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)

Aggiorna un annuncio

Se hai configurato l'unità pubblicitaria in modo che si aggiorni, non devi richiedere un altro annuncio quando il caricamento dell'annuncio non riesce. Google Mobile Ads SDK rispetta qualsiasi frequenza di aggiornamento specificata nell'interfaccia utente di Ad Manager. Se non hai attivato l'aggiornamento, invia una nuova richiesta. Per ulteriori dettagli sull'aggiornamento dell'unità pubblicitaria, ad esempio sull' impostazione di una frequenza di aggiornamento, consulta la pagina Frequenza di aggiornamento degli annunci nelle app mobile.

Rilascia una risorsa annuncio

Quando hai finito di utilizzare un annuncio banner, puoi rilasciare le risorse dell'annuncio banner.

Per rilasciare la risorsa dell'annuncio, rimuovi l'annuncio dalla gerarchia di oggetti View ed elimina tutti i relativi riferimenti:

Java

public void destroyBanner() {
  // Remove banner from view hierarchy.
  if (adView != null) {
    View parentView = (View) adView.getParent();
    if (parentView instanceof ViewGroup) {
      ((ViewGroup) parentView).removeView(adView);
    }

    // Destroy the banner ad resources.
    adView.destroy();
  }

  // Drop reference to the banner ad.
  adView = null;
}

Kotlin

fun destroyBanner() {
  // Remove banner from view hierarchy.
  val parentView = adView?.parent
  if (parentView is ViewGroup) {
    parentView.removeView(adView)
  }

  // Destroy the banner ad resources.
  adView?.destroy()

  // Drop reference to the banner ad.
  adView = null
}

Eventi annuncio

Puoi ascoltare una serie di eventi nel ciclo di vita dell'annuncio, tra cui il caricamento, l'impressione dell'annuncio e il clic, nonché gli eventi di apertura e chiusura dell'annuncio. Ti consigliamo di impostare il callback prima di caricare il banner.

Java

if (adView != null) {
  adView.setAdListener(
      new AdListener() {
        @Override
        public void onAdClicked() {
          // Code to be executed when the user clicks on an ad.
        }

        @Override
        public void onAdClosed() {
          // Code to be executed when the user is about to return
          // to the app after tapping on an ad.
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError adError) {
          // Code to be executed when an ad request fails.
        }

        @Override
        public void onAdImpression() {
          // Code to be executed when an impression is recorded
          // for an ad.
        }

        @Override
        public void onAdLoaded() {
          // Code to be executed when an ad finishes loading.
        }

        @Override
        public void onAdOpened() {
          // Code to be executed when an ad opens an overlay that
          // covers the screen.
        }
      });
}

Kotlin

adView?.adListener =
  object : AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
  }

Ognuno dei metodi sostituibili in AdListener corrisponde a un evento nel ciclo di vita di un annuncio.

Metodi sostituibili
onAdClicked() Il metodo onAdClicked() viene richiamato quando viene registrato un clic su un annuncio.
onAdClosed() Il onAdClosed() metodo viene richiamato quando un utente torna all'app dopo aver visualizzato l'URL di destinazione di un annuncio. La tua app può utilizzarlo per riprendere le attività sospese o eseguire qualsiasi altro lavoro necessario per prepararsi all'interazione.
onAdFailedToLoad() Il metodo onAdFailedToLoad() è l'unico che include un parametro. Il parametro error di tipo LoadAdError descrive l'errore che si è verificato. Per ulteriori informazioni, consulta la documentazione Debugging degli errori di caricamento degli annunci.
onAdImpression() Il metodo onAdImpression() viene richiamato quando viene registrata un'impressione per un annuncio.
onAdLoaded() Il metodo onAdLoaded() viene eseguito al termine del caricamento di un annuncio. Se vuoi ritardare l'aggiunta di AdManagerAdView alla tua attività o al tuo fragment finché non sei sicuro che un annuncio verrà caricato, ad esempio, puoi farlo qui.
onAdOpened() Il metodo onAdOpened() viene richiamato quando un annuncio apre un overlay che copre lo schermo.

Accelerazione hardware per gli annunci video

Affinché gli annunci video vengano visualizzati correttamente nelle visualizzazioni degli annunci banner, è necessario attivare l'accelerazione hardware.

L'accelerazione hardware è attivata per impostazione predefinita, ma alcune app potrebbero scegliere di disattivarla. Se questo vale per la tua app, ti consigliamo di attivare l'accelerazione hardware per le classi Activity che utilizzano gli annunci.

Attiva l'accelerazione hardware

Se la tua app non si comporta correttamente con l'accelerazione hardware attivata a livello globale, puoi controllarla anche per le singole attività. Per attivare o disattivare l'accelerazione hardware, puoi utilizzare l'attributo android:hardwareAccelerated per gli <application> e <activity> elementi in AndroidManifest.xml. L'esempio seguente attiva l'accelerazione hardware per l'intera app, ma la disattiva per un'attività:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

Per ulteriori informazioni sulle opzioni per controllare l'accelerazione hardware, consulta la guida Accelerazione hardware. Tieni presente che le singole visualizzazioni degli annunci non possono essere attivate per l'accelerazione hardware se l'attività è disattivata, quindi l'attività stessa deve avere l'accelerazione hardware attivata.

Conteggio manuale delle impressioni

Il conteggio manuale delle impressioni è compatibile solo con le campagne dirette e interne con creatività il cui traffico viene gestito direttamente in Ad Manager. Non deve essere utilizzato per gli annunci di backfill o di reti di terze parti. Per ulteriori dettagli, consulta la pagina Conteggio di impressioni e clic.

Puoi inviare manualmente i ping di impressione ad Ad Manager se hai condizioni speciali per quando deve essere registrata un'impressione:

Java

if (adManagerAdView != null) {
  adManagerAdView.setManualImpressionsEnabled(true);
}

Kotlin

adManagerAdView?.setManualImpressionsEnabled(true)

Quando determini che un annuncio è stato restituito correttamente e viene visualizzato sullo schermo, puoi registrare manualmente un'impressione:

Java

if (adManagerAdView != null) {
  adManagerAdView.recordManualImpression();
}

Kotlin

adManagerAdView?.recordManualImpression()

Eventi app

Gli eventi app ti consentono di creare annunci che possono inviare messaggi al codice dell'app. L'app può quindi intraprendere azioni in base a questi messaggi.

Puoi ascoltare gli eventi app specifici di Ad Manager utilizzando AppEventListener. Questi eventi possono verificarsi in qualsiasi momento durante il ciclo di vita dell'annuncio, anche prima della chiamata di onAdLoaded().

Imposta AppEventListener su AdManagerAdView:

Java

if (adManagerAdView != null) {
  adManagerAdView.setAppEventListener(this);
}

Kotlin

adManagerAdView?.appEventListener = this

Ecco un esempio che mostra come modificare il colore di sfondo dell'app a seconda di un evento app con un nome di colore:

Java

@Override
public void onAppEvent(@NonNull String name, @NonNull String info) {
  if (name.equals("color")) {
    switch (info) {
      case "green":
        // Set background color to green.
        break;
      case "blue":
        // Set background color to blue.
        break;
      default:
        // Set background color to black.
        break;
    }
  }
}

Kotlin

override fun onAppEvent(name: String, info: String) {
  if (name == "color") {
    when (info) {
      "green" -> {
        // Set background color to green.
      }
      "blue" -> {
        // Set background color to blue.
      }
      else -> {
        // Set background color to black.
      }
    }
  }
}

Ecco la creatività corrispondente che invia messaggi di eventi app di colore al listener:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Per un'implementazione degli eventi app nell'app Demo API, consulta l'esempio di eventi app di Ad Manager.

Java Kotlin JetpackCompose

Passaggi successivi

Banner comprimibili

Gli annunci banner comprimibili sono annunci banner che inizialmente vengono presentati come un overlay più grande, con un pulsante per comprimere l'annuncio a una dimensione più piccola. Valuta la possibilità di utilizzarli per ottimizzare ulteriormente il rendimento. Per ulteriori dettagli, consulta la pagina Annunci banner comprimibili.

Banner adattivi in linea

I banner adattivi in linea sono banner più grandi e più alti rispetto ai banner adattivi ancorati. Hanno un'altezza variabile e possono essere alti quanto lo schermo del dispositivo. I banner adattivi in linea sono consigliati rispetto agli annunci banner adattivi ancorati per le app che inseriscono annunci banner in contenuti scorrevoli. Per ulteriori dettagli, consulta la pagina Banner adattivi in linea.

Esplora altri argomenti