Annunci banner

Seleziona la piattaforma: Android iOS Unity Flutter

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 mentre gli utenti interagiscono con l'app, ancorati in alto o in basso.

Questa guida illustra il caricamento di un annuncio banner ancorato adattivo in un'app per Android.

Prerequisiti

  • Completa la Guida introduttiva.
  • (Facoltativo) Per un esempio di implementazione degli annunci banner, seleziona una delle seguenti app di esempio:

Esegui sempre test con annunci di prova

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

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

ca-app-pub-3940256099942544/9214589741

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

Per saperne di più sul funzionamento degli annunci di prova dell'SDK Google Mobile Ads, consulta Attivare gli annunci di prova.

Definire la visualizzazione dell'annuncio

Layout XML

Aggiungi una visualizzazione al file XML del layout da utilizzare come contenitore per l'annuncio banner adattabile 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. Passaggio 1: includi il modulo JetpackComposeDemo/compose-util. Questo modulo include helper per comporre l'oggetto e gli asset AdView.

  2. Passaggio 2: componi una classe BannerAd utilizzando il modulo compose-util:


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

Impostare 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 an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))

Jetpack Compose


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

Aggiungere AdView al layout

Crea un AdView utilizzando le dimensioni dell'annuncio da aggiungere al layout della tua 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 an anchored adaptive banner with a width of 360.
adView.setAdSize(AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, 360))
this.adView = adView

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

Jetpack Compose


val adView = remember { AdView(context) }

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

// Set the adaptive banner ad size with a given width.
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(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()) { BannerAd(adView, modifier) }
}

Carica un annuncio

Una volta inserito il AdView, il passaggio successivo consiste nel caricare un annuncio. Questo viene fatto con il metodo loadAd() nella classe AdView. Richiede un parametro AdRequest, che contiene informazioni di runtime, ad esempio informazioni sul targeting, relative a una singola richiesta di annuncio.

Ecco un esempio che mostra come caricare un annuncio:

Java

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

Kotlin

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

In caso di esito positivo, la tua app è pronta per mostrare gli annunci banner.

Aggiornare un annuncio

Se hai configurato l'aggiornamento dell'unità pubblicitaria, non devi richiedere un altro annuncio quando non riesce a caricarsi. L'SDK Google Mobile Ads rispetta qualsiasi frequenza di aggiornamento specificata nell'interfaccia utente di AdMob. Se non hai attivato il aggiornamento, invia una nuova richiesta. Per ulteriori dettagli sull'aggiornamento delle unità pubblicitarie, ad esempio sull'impostazione di una frequenza di aggiornamento, consulta Utilizzare l'aggiornamento automatico per gli annunci banner.

Rilasciare una risorsa annuncio

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

Per rilasciare la risorsa dell'annuncio, rimuovi l'annuncio dalla gerarchia delle visualizzazioni e elimina tutti i relativi riferimenti:

Kotlin

// 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

Java

// Remove banner from view hierarchy.
if (adView.getParent() instanceof ViewGroup) {
  ((ViewGroup) adView.getParent()).removeView(adView);
}
// Destroy the banner ad resources.
adView.destroy();
// Drop reference to the banner ad.
adView = null;

Jetpack Compose


DisposableEffect(Unit) {
  // Destroy the AdView to prevent memory leaks when the screen is disposed.
  onDispose { adView.destroy() }
}

Eventi dell'annuncio

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

Java

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(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.
    }
}

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

Metodi sostituibili
onAdClicked() Il metodo onAdClicked() viene invocato quando viene registrato un clic per un annuncio.
onAdClosed() Il metodo onAdClosed() viene invocato quando un utente torna nell'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. Consulta l'esempio di AdListener di AdMob per un'implementazione dei metodi dell'ascoltatore di annunci nell'app Demo dell'API Android.
onAdFailedToLoad() Il metodo onAdFailedToLoad() è l'unico che include un parametro. Il parametro errore di tipo LoadAdError descrive l'errore che si è verificato. Per saperne di più, consulta la documentazione relativa al debug 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 posticipare l'aggiunta di AdView alla tua attività o al tuo frammento finché non hai la certezza che verrà caricato un annuncio, ad esempio, puoi farlo qui.
onAdOpened() Il metodo onAdOpened() viene invocato 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 è attiva 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 i Activity classi che utilizzano gli annunci.

Attivare 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 elementi <application> e <activity> nel 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 di controllo dell'accelerazione hardware, consulta la guida sull'accelerazione hardware. Tieni presente che le visualizzazioni dei singoli annunci non possono essere attivate per l'accelerazione hardware se l'attività è disattivata, pertanto l'accelerazione hardware deve essere attivata per l'attività stessa.

Passaggi successivi

Banner comprimibili

Gli annunci banner comprimibili sono annunci banner inizialmente presentati come overlay più grandi, con un pulsante per comprimere l'annuncio in modo da ridurne le dimensioni. Valuta la possibilità di utilizzarla per ottimizzare ulteriormente il rendimento. Per maggiori dettagli, consulta gli annunci banner comprimibili.

Banner adattivi in linea

I banner adattivi in linea sono più grandi e più alti rispetto ai banner adattivi ancorati. Sono di altezza variabile e possono occupare l'intero schermo del dispositivo. I banner adattivi in linea sono consigliati rispetto agli annunci banner adattivi ancorati per le app che posizionano gli annunci banner in contenuti scorrevoli. Per ulteriori dettagli, consulta la sezione relativa ai banner adattabili in linea.

Esplora altri argomenti