Questa guida spiega come caricare un annuncio banner adattivo ancorato in un'app per Android.
Prerequisiti
- Completa la Guida introduttiva.
- (Facoltativo) Per un esempio di implementazione di annunci banner, seleziona una delle seguenti app di esempio:
- Esempio di annunci banner adattivi ancorati Java, Kotlin o Jetpack Compose.
- La demo delle funzionalità avanzate di Java o Kotlin.
Esegui sempre i test con gli annunci di prova
Quando crei ed esegui test sulle tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione live. In caso contrario, il tuo account potrebbe essere sospeso.
Il modo più semplice per caricare gli annunci di test è utilizzare il nostro ID unità pubblicitaria di test dedicato per i banner Android:
/21775744923/example/adaptive-banner
È stato configurato appositamente per restituire annunci di test per ogni richiesta e puoi utilizzarlo nelle tue app durante la codifica, il test e il debug. Assicurati solo di sostituirlo con il tuo ID unità pubblicitaria prima di pubblicare l'app.
Per ulteriori informazioni su come funzionano gli annunci di test dell'SDK Google Mobile Ads, consulta Attivare gli annunci di test.
Definisci la visualizzazione dell'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
Includi il modulo JetpackComposeDemo/compose-util. Questo modulo include helper per la composizione dell'oggetto
AdView
e degli asset.Componi una classe
BannerAd
dal modulocompose-util
:
// Place the ad view at the bottom of the screen.
Column(modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Bottom) {
Box(modifier = modifier.fillMaxWidth()) { AdManagerBannerAd(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 AdManagerAdView
al layout
Crea un AdManagerAdView
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 { AdManagerAdView(context) }
// Setup and load the adview.
// Set the unique ID for this specific ad unit.
adView.adUnitId = ADMANANGER_ADAPTIVE_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()) { AdManagerBannerAd(adView, modifier) }
}
Caricare un annuncio
Una volta inserito il AdManagerAdView
, il passaggio successivo è
caricare un annuncio. Questa operazione viene eseguita con il metodo loadAd()
nella classe AdManagerAdView
. Accetta un parametro AdManagerAdRequest
che contiene informazioni di runtime, ad esempio informazioni di targeting, su 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'unità pubblicitaria in modo che venga aggiornata, non devi richiedere un altro annuncio quando il caricamento dell'annuncio non va a buon fine. L'SDK Google Mobile Ads rispetta qualsiasi frequenza di aggiornamento specificata nell'interfaccia utente di Ad Manager. Se non hai attivato l'aggiornamento, invia una nuova richiesta. Per maggiori dettagli sull'aggiornamento delle unità pubblicitarie, ad esempio l'impostazione di una frequenza di aggiornamento, consulta Frequenza di aggiornamento degli annunci nelle app mobile.
Rilasciare 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 visualizzazione 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 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
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.
}
}
Ciascuno dei metodi sostituibili in AdListener
corrisponde a un evento nel ciclo di vita di un annuncio.
Metodi di cui è possibile eseguire l'override | |
---|---|
onAdClicked() |
Il metodo onAdClicked()
viene richiamato quando viene registrato un clic per un annuncio.
|
onAdClosed() |
Il metodo onAdClosed()
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 di errore di tipo
LoadAdError descrive l'errore che si è verificato. Per saperne di più,
consulta la documentazione sulla risoluzione dei problemi 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 frammento finché non hai la certezza che verrà caricato un annuncio, 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, l'accelerazione hardware deve essere attivata.
L'accelerazione hardware è abilitata 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.
Attivare l'accelerazione hardware
Se la tua app non si comporta correttamente con l'accelerazione hardware attivata
a livello globale, puoi controllarla anche per singole attività. Per attivare o disattivare l'accelerazione hardware, puoi utilizzare l'attributo android:hardwareAccelerated
per gli elementi <application>
e <activity>
nel file 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 all'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.
Conteggio manuale delle impressioni
Il conteggio manuale delle impressioni è compatibile solo con le campagne vendute direttamente e autopromozionali con creatività il cui traffico viene gestito direttamente in Ad Manager. Non deve essere utilizzato per il backfill o gli annunci di reti di terze parti. Per maggiori dettagli, vedi Conteggio di impressioni e clic.
Puoi inviare manualmente i ping di impressione ad Ad Manager se hai condizioni speciali per la registrazione di 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 dell'app specifici di Ad Manager utilizzando
AppEventListener
.
Questi eventi possono verificarsi in qualsiasi momento durante il ciclo di vita dell'annuncio, anche prima
che venga chiamato 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 in base a 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 relativi all'app a colori 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>
Consulta l'esempio di eventi app di Ad Manager per un'implementazione degli eventi app nell'app demo API.
Passaggi successivi
Banner comprimibili
Gli annunci banner comprimibili sono annunci banner che inizialmente vengono presentati come overlay più grande, con un pulsante per comprimere l'annuncio a una dimensione più piccola. Valuta la possibilità di utilizzarlo per ottimizzare ulteriormente il rendimento. Per maggiori dettagli, consulta la sezione sugli annunci banner comprimibili.
Banner adattivi in linea
I banner adattivi in linea sono più grandi e più alti rispetto ai banner adattivi ancorati. Hanno un'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 Banner adattivi in linea.