Android Tutorial - 1 - Gestire un banner
Nell'articolo di oggi vedremo come gestire al meglio il banner pubblicitario all'interno della nostra app. Quello che vedremo ben si adatta anche a situazioni in cui si vuole che solo una parte dello scherma supporti lo scrolling.
Sulle modalità per integrare un banner, rimando al sito di AdMob, recentemente acquisito da Google, dove potete scaricare l'SDK da integrare.
E' mio interesse mostrare le modalità per integrare il banner all'interno dell'app, in modo da rendere l'operazione facile e indolore.
Approccio Dichiarativo
E' possibile inserire direttamente il seguente blocco xml all'interno del nostro layout. Il parametro keywords deve essere valorizzato con l'ID Editore rilasciato da AdMob all'atto della creazione del profilo della nostra app.
<com.admob.android.ads.AdView
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
app:keywords="xxxxxxxxxxx" />
In questo modo alla visualizzazione del nostro layout verrà anche visualizzato il banner. Con questo approccio, se vogliamo avere il banner in più activity della nostra app, dobbiamo inserire il blocco in ogni layout relativo all'activity.
Approccio Programmatico
E' possibile gestire il banner programmaticamente, ovvero instanziare l'oggetto e configurarlo in uno dei metodi legati al ciclo di vita della nostra Activity, tipicamente il metodo onCreate.
AdView adView = new AdView(this, AdSize.BANNER, Costanti.MY_AD_UNIT_ID);
LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
layout.addView(adView);
AdRequest request = new AdRequest();
adView.loadAd(request);
Con questo approccio possiamo strutturare le nostre classi in modo da rendere trasparente per le nostre activity l'invocazione del banner, ad esempio tramite una activity astratta responsabile della gestione del banner, da cui ereditare le activity responsabili della logica della nostro app.
Tipici Problemi
Il problema che si può riscontrare è la mancata visualizzazione del banner. Fortunamente i log di Android ci danno tutte le indicazioni sulle possibili cause. Un motivo può essere il layout con spazio insufficiente per mostrare il banner e questo avviene tipicamente su dispositivi con display piccoli, dove abbiamo previsto di usare del padding. In questo caso l'errore che Android mostra è Not enough space to show ad! Wants: <320, 50>, Has: <270, 430>. Il problema si risolve agganciando il nostro banner al layout con una dimensione sufficiente a contenere il banner.
Altro problema è la posizione del banner, che può essere infelice o nella posizione non attesa. Per assicurarci la posizione desiderata possiamo usare il RelativeLayout e posizionare il banner nella posizione desiderata. Nell'esempio di sotto ho posizionato il banner in basso rispetto al container e l'oggetto ScrollView al di sopra del banner. In questo modo garantiamo la visualizzazione del banner nella posizione desiderata.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" >
<LinearLayout android:layout_alignParentBottom="true" />
<ScrollView style="@style/contenitoreScroll" android:layout_above="@id/mainAdv" >
</RelativeLayout>