2012-06-19 15 views
10

Ho provato molti blog ma nessuno ha fornito la soluzione passo passo. Dovrei modificare qualcosa sul sito di AdMob? Ho creato il sito dall'opzione annuncio pubblicitario/app nella scheda Siti &.Come creare un annuncio interstitial per Android?

Ho usato questo codice:

interstitial = new InterstitialAd(this, "MyAdMobID"); 
// Set Ad Listener to use the callbacks below 
interstitial.setAdListener(this); 
// Create ad request 
AdRequest adRequest = new AdRequest(); 
adRequest.addTestDevice(AdRequest.TEST_EMULATOR); 
// Begin loading your interstitial  
interstitial.loadAd(adRequest); 
adRequest.setTesting(true); 
+0

Supponendo che "MyAdMobId" venga sostituito con il proprio ID effettivo e si sta eseguendo il test in un emulatore, questo dovrebbe funzionare. Cosa vedi nei log? (Tieni presente che AdMob richiede che tu sia autorizzato nella whitelist per offrire interstitial di rete) –

+0

Nulla nel registro, ma come faccio a sapere se sono autorizzato a pubblicare annunci interstitial di rete? –

+0

Probabilmente non sei autorizzato. AdMob offre solo articoli di rete a pochi eletti (vedi [qui] (https://developers.google.com/mobile-ads-sdk/docs/android/advanced#overview)). A meno che tu non sia autorizzato, puoi inserire il test interstitial o interstitial di una casa solo se imposti una campagna di annunci autopromozionali interstitial. –

risposta

7

utilizzando l'ultimo quadro di Android, ho capito che ho bisogno di chiamare la funzione load() ogni volta che l'annuncio viene chiuso.

import com.google.android.gms.ads.*; 
import android.os.Handler; 
import android.os.Looper; 
import android.app.Activity; 

class MyActivity extends Activity implements AdListener { 
    private InterstitialAd adView; // The ad 
    private Handler mHandler;  // Handler to display the ad on the UI thread 
    private Runnable displayAd;  // Code to execute to perform this operation 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    adView = new InterstitialAd(mContext); 
    adView.setAdUnitId("ca-app-pub-XXXXXXXXXX"); 
    adView.setAdListener(this); 
    mHandler = new Handler(Looper.getMainLooper()); 
    displayAd = new Runnable() { 
     public void run() { 
     runOnUiThread(new Runnable() { 
      public void run() { 
      if (adView.isLoaded()) { 
       adView.show(); 
      } 
      } 
     }); 
     } 
    }; 
    loadAd(); 
    } 

    @Override 
    public void onAdClosed() { 
    loadAd(); // Need to reload the Ad when it is closed. 
    } 

    void loadAd() { 
    AdRequest adRequest = new AdRequest.Builder() 
    //.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
    .build(); 

    // Load the adView object witht he request 
    adView.loadAd(adRequest); 
    } 

    //Call displayInterstitial() once you are ready to display the ad. 
    public void displayInterstitial() { 
    mHandler.postDelayed(displayAd, 1); 
    } 
} 
+0

Grazie per il 'loadAd' in' onAdClosed'. Questo è ciò che puoi essere pronto a visualizzare un altro annuncio. –

11

A differenza di banner, annunci insterstitial non mostrano automaticamente una volta che il loro carico. Devi ascoltare la callback di AdMob onReceiveAd() e, all'interno di quella richiamata, chiamare interstital.show() per mostrare l'interstitial.

public YourActivity extends Activity implements AdListener { 
    ... 

    @Override 
    public void onReceiveAd(Ad ad) { 
    Log.d("OK", "Received ad"); 
    if (ad == interstitial) { 
     interstitial.show(); 
    } 
    } 
} 

Partenza un esempio di codice here. Questo esempio mostrerà l'interstiziale non appena ricevuto. In alternativa, potresti voler attendere fino al momento giusto per mostrare l'interstitial, ad esempio alla fine di un livello di gioco, e puoi controllare interstitial.isReady() per vedere se è possibile visualizzare l'interstitial.

3

Penso che questo codice di esempio possa aiutarti.

How to Add AdMob Interstitial Ads in Your Android Apps

In questo esempio, vi mostra l'intero codice sorgente. E fornisce anche alcune soluzioni per errori comuni. Ad esempio, soluzione di errore onFailedToReceiveAd e nessuna soluzione restituita annuncio. Puoi anche scaricare il codice sorgente da lì.

1

FYI, il metodo interstitial.isReady() non è più supportato. Questo è il metodo corretto:

if (interstitial.isLoaded()) { 
    interstitial.show(); 
} 
6

Non puoi implementare più AdListener, ho usato in questo modo:

final mInterstitialAd = new InterstitialAd(this); 
mInterstitialAd.setAdUnitId(getResources().getString(R.string.interstitial_ad_unit_id)); 
AdRequest adRequestInter = new AdRequest.Builder().build(); 
mInterstitialAd.setAdListener(new AdListener() { 
    @Override 
    public void onAdLoaded() { 
     mInterstitialAd.show(); 
    } 
}); 
mInterstitialAd.loadAd(adRequestInter); 

Posizionare il proprio ID in strings.xml nome interstitial_ad_unit_id, o sostituire

getResources().getString(R.string.interstitial_ad_unit_id) 

con il tuo ID.

-1

chiamare questa funzione in apertura di app:

InterstitialAd interstitial; 

public void AdMob() { 
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("YOUR_TEST_DEVICE_ID").build(); 
    interstitial = new InterstitialAd(this); 
    interstitial.setAdUnitId("YOUR_AD_ID"); 
    interstitial.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      super.onAdLoaded(); 
      //Ads loaded 
     } 

     @Override 
     public void onAdClosed() { 
      super.onAdClosed(); 
      //Ads closed 
     } 

     @Override 
     public void onAdFailedToLoad(int errorCode) { 
      super.onAdFailedToLoad(errorCode); 
      //Ads couldn't loaded 
     } 
    }); 
    interstitial.loadAd(adRequest); 
} 

Quindi è possibile visualizzare gli annunci:

if (interstitial.isLoaded()){ 
interstitial.show(); 
} 

Si dovrebbe preparare gli annunci prima di mostrarlo. Ci sono voluti 3-5 secondi a seconda della velocità di internet del dispositivo.

Problemi correlati