Autore Topic: [Facile] Pubblicità con AdMob versione 4.x  (Letto 28146 volte)

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
[Facile] Pubblicità con AdMob versione 4.x
« il: 13 Maggio 2011, 10:30:00 CEST »
+6
Livello di difficoltà: Facile
Versione SDK utilizzata: 1.6+
Link al file compresso del progetto eclipse: Sito AdMod

Che male c'è nel guadagnare qualche cosina dopo aver sudato tanto? Il modo più semplice per farlo è inserire un poco di pubblicità nella nostra nuova applicazione Android! Questo tutorial vi spiega passo passo come fare per inserire un piccolo banner pubblicitario nella vostra applicazione utilizzando il servizio offerto da AdMob.

Per prima cosa bisogna registrarsi al servizio che vi offre i banner pubblicitari. Per questo tutorial ho scelto AdMob che è di proprietà di Google, sfrutta anche la pubblicità di AdSense ed è il più diffuso per gli sviluppatori italiani.

Per registrarvi vi basta collegarvi a questa pagina.

Una volta registrati, fate l'accesso e recatevi alla pagina Aggiungi sito/applicazione selezionando Applicazione Android. Compilate i campi Nome applicazione, indirizzo del market (o vuoto se non pubblicate su market), Categoria e Descrizione.
Una volta completata la registrazione dell'applicazione questa comparirà nella pagina Siti e applicazioni.
Andate su Gestisci Impostazioni dell'applicazione che avete appena creato e segnatevi l'ID editore in alto a sinistra (è una stringa dal formato simile a questo a1496ced2842262) e cliccate su Ricevi codice editore per ottenere la libreria in formato jar da aggiungere alla vostra applicazione Android. Scaricherete un file chiamato googleadmobadssdkandroid.zip, scompattatelo, all'interno, insieme alla documentazione in inglese, ci sarà la libreria che ci serve: GoogleAdMobAdsSdk-4.1.0.jar (il numero della versione potrebbe essere diverso, nel momento in cui vi scrivo è la 4.1.0).

Quello che dobbiamo fare adesso è includere la libreria nel nostro progetto in Eclipse. Nulla di più semplice:
Creiamo la cartella "libs" nel nostro progetto e copiamo all'interno la libreria GoogleAdMobAdsSdk-4.1.0.jar:
Pulsante desto sul progetto, proprietà, Java Build Path, Add Jars e selezioniamo la libreria appena copiata:

Le proprietà del nostro progetto devono essere uguali a quelle riportate in questa immagine (immagine presa direttamente dal sito AdMod):


Adesso tutte le classi presenti nella libreria saranno visibili dal nostro progetto! Vediamo come usarle!

Apriamo il file AndroidManifest.xml tramite l'editor di Eclipse e...

...nella scheda Application, aggiungiamo:
  • Una nuova Activity dal nome com.google.ads.AdActivity e con proprietà configChanges le seguenti: keyboard|keyboardHidden|orientation

...nella scheda Permissions, aggiungiamo:
  • Il permesso Uses Permission android.permission.ACCESS_NETWORK_STATE
  • Il permesso Uses Permission android.permission.INTERNET

Quello che manca adesso è inserire fisicamente il banner nel nostro layout. Per farlo basta seguire questi 2 semplici passi:

1. Segniamo l'id del layout dove vogliamo inserire il banner.
Nell'esempio di AdMod il layout principale (chiamato main.xml) è composto in questo modo:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/linearLayout"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" >
</LinearLayout>
Quindi l'id che a noi interessa si chiama linearLayout.
In layout più reali e complessi il consiglio che posso darvi è di creare sempre un LinearLayout ad hoc per la vostra pubblicità. Ad esempio, in questo tipico layout con un testo in alto ed una lista o un testo in caso di lista vuota:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
                android:id="@+id/titleText"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Titolo" />
        <ListView
                android:id="@android:id/list"
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1" />
        <TextView
                android:id="@android:id/empty"
                android:text="Nessun elemento!"
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1"
                android:padding="10dip" />
        <LinearLayout
                android:id="@+id/linearLayout"
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
</LinearLayout>
ho creato alla fine un LinearLayout (sempre con id linearLayout) ad hoc per la pubblicità che visualizzerà il banner sempre in basso.

Off-Topic:
Per essere conforme con la documentazione ufficiale di AdMob ho lasciato in nome originale dell'id del LinearLayout linearLayout. Scusate il francesismo, ma un nome più mer**so non potevano metterlo in una documentazione ufficiale! Il mio consiglio è di mettere un nome più idoneo tipo "adsView", "ads" o "adsLinearLayout"!

2. Inseriamo il banner vero e proprio da codice.
Posto subito il codice dell'activity con i commenti:
Codice (Java): [Seleziona]
import com.google.ads.*;

public class BannerExample extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Crea una View che rappresenta il banner pubblicitario (sostituite MY_AD_UNIT_ID con l'ID Editore che vi eravate segnati prima).
    AdView adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);
    // Effettuiamo la lookup della ViewGroup che conterrà il nostro banner
    // Nel nostro caso è un LinearLayout con id linearLayout
    LinearLayout layout = (LinearLayout)findViewById(R.id.linearLayout);
    // Aggiungiamo la view adView al LinearLayout
    layout.addView(adView);
    // Richiediamo un nuovo banner al server di AdMod
    adView.loadAd(new AdRequest());
  }
}
ed il gioco è fatto!

Adesso passiamo al debug della nostra applicazione.
Tutti le azioni intraprese dalla libreria AdMog sono taggate con la stringa "Ads", quindi ci basta effettuare il logcat di questo tag per scoprire cosa sta facendo la libreria.

Ad esempio con adb logcat Ads:d *:s ottengo:
Codice: [Seleziona]
I/Ads     (25350): adRequestUrlHtml: XXXX
I/Ads     (25350): Received ad url: YYYY
I/Ads     (25350): onReceiveAd()
nel caso in cui ricevo un banner pubblicitario da visualizzare, oppure
Codice: [Seleziona]
I/Ads     (  123): adRequestUrlHtml: XXXX
I/Ads     (  123): AdLoader timed out while getting the URL.
I/Ads     (  123): onFailedToReceiveAd(A network error occurred.)
nel caso in cui ho un errore di connessione (3G e Wifi non attivi)

That's all! Buana pubblicità a tutti!

Off-Topic:
Aggiungo una piccola morale: quando vi capita per le mani una applicazione (magari che avete scaricato in modo gratuito) con una pubblicità, un ottimo modo per premiare e ringraziare lo sviluppatore è proprio cliccare su quella pubblicità. In questo modo regalerete allo sviluppatore pochissimi centesimi che gli serviranno come stimolo per migliorare l'applicazione stessa!

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #1 il: 24 Maggio 2011, 21:22:59 CEST »
0
Ciao
intanto grazie per la guida è veramente fatta bene

purtroppo non mi scarica le ad

se guardo nel logcat mi da questo messaggio:
Citazione
05-24 21:20:48.657: INFO/Ads(3914): onFailedToReceiveAd(Ad request successful, but no ad returned due to lack of ad inventory.)


Sai aiutarmi per caso?
Grazie

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #2 il: 24 Maggio 2011, 22:05:57 CEST »
0
Il server non ha annunci da visualizzare... appena li avrà verranno visualizzati.

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #3 il: 24 Maggio 2011, 22:07:44 CEST »
0
ah
grazie....e io che pensavo di sbagliare qualcosa xD

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #4 il: 24 Maggio 2011, 22:10:09 CEST »
0
ma quindi cosa dovrei fare....con un timer riprovare dopo tot secondi???
scusate l'ignoranza

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #5 il: 24 Maggio 2011, 22:12:56 CEST »
0
Fa tutto da solo. Se hai seguito il tutorial devi solo aspettare.

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #6 il: 24 Maggio 2011, 22:13:56 CEST »
0
ah si giusto....ho appena visto...grazie

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #7 il: 02 Agosto 2011, 21:27:22 CEST »
0
Ciao bel tutorial ma mi da un errore mi dice che il mio codice editore non puo essere risolto a una variabile !  :-\ mi sapresti dire il perche ?

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #8 il: 02 Agosto 2011, 21:31:25 CEST »
0
Prima che ti rispondano meno garbatamente :P

Posta il logcat dell'applicazione ;)

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #9 il: 02 Agosto 2011, 21:41:50 CEST »
0
ma non saprei che parte del logcat postare visto he me lo segna rosso quindi non posso far partire l'applicazione . l'errore e nel codice java  ;-)

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #10 il: 02 Agosto 2011, 21:43:00 CEST »
0
quindi... posta il codice

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #11 il: 02 Agosto 2011, 21:45:45 CEST »
0
Codice (Java): [Seleziona]
package package.app;

import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;

public class miaappActivity extends Activity{
 

@Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Lookup R.layout.main
    LinearLayout layout = (LinearLayout)findViewById(R.id.linearlayout);
     
    // Create the adView
    // Please replace MY_BANNER_UNIT_ID with your AdMob Publisher ID
    AdView adView = new AdView(this, AdSize.BANNER, QUA CE L'ERRORE PERCHE E SEGNATO ROSSO IO HO MESSO IL MIO ID EDITORE);
 
    // Add the adView to it
    layout.addView(adView);
     
    // Initiate a generic request to load it with an ad
    AdRequest request = new AdRequest();
    request.setTesting(true);

    adView.loadAd(request);            
  }
}

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #12 il: 02 Agosto 2011, 21:54:00 CEST »
+1
Vedi questo è il mio codice e funziona perfettamente:

Codice (Java): [Seleziona]
        private static final String ADMOB_ID = "abcdefghilmnopq";
       
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.portrait);
        startAds();
    }
        private AdView adMobView;
        private AdRequest adMobRequest;
       
    private void startAds () {
       
        //AdMob
            adMobView = new AdView(this, AdSize.BANNER, ADMOB_ID);
            adMobRequest = new AdRequest();
            adMobRequest.setTesting(false);
            adMobView.loadAd(adMobRequest);
 }

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #13 il: 03 Agosto 2011, 11:42:41 CEST »
0
Grazie giannign1 (ti ho anche messo il thanks ) ma ti volevo chiedere se si potesse mettere piu inserzioni sulla stesssa activity o view e che perte di codice dovrei ripetere ? grazie

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:[Facile] Pubblicità con AdMob versione 4.x
« Risposta #14 il: 03 Agosto 2011, 11:53:11 CEST »
0
Sinceramente non ho mai provato
ma temo che due richieste a poca distandistanza di tempo l'una dall'altra restituiscano lo stesso bannrt

Attendo per conferme da qualcuno più esperto


Gianni