2012-06-19 11 views
10

Probé muchos blogs, pero nadie ofrece la solución paso a paso. ¿Debo editar algo en el sitio de AdMob? Creé el sitio desde la opción ad sit/app en la pestaña Sitios & Aplicaciones.Cómo crear un anuncio intersticial para Android?

que utiliza este código:

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

Suponiendo que "MyAdMobId" se reemplaza con su identificación real, y está probando en un emulador, esto debería funcionar. ¿Qué estás viendo en los registros? (Tenga en cuenta que AdMob requiere que esté en la lista blanca para servir los intersticiales de la red) –

+0

No hay nada en el registro, pero ¿cómo puedo saber si estoy en la lista blanca para publicar intersticiales en la red? –

+0

Probablemente no esté en la lista blanca. AdMob solo ofrece intersticiales de red a unos pocos seleccionados (consulte [aquí] (https://developers.google.com/mobile-ads-sdk/docs/android/advanced#overview)). A menos que esté en la lista blanca, solo puede obtener el intersticial de prueba o un intersticial de la casa si configura una campaña publicitaria intersticial. –

Respuesta

7

Usando el último marco de Android, me di cuenta de que tengo que llamar a la función load() cada vez que el anuncio se cierra.

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

Gracias por el 'loadAd' en' onAdClosed'. Esto es lo que puede estar listo para mostrar otro anuncio. –

11

A diferencia de banners, anuncios insterstitial no muestran de forma automática una vez que su carga. Tendrá que escuchar la devolución de llamada de AdMob onReceiveAd(), y dentro de esa devolución de llamada, llame al interstital.show() para mostrar su intersticial.

public YourActivity extends Activity implements AdListener { 
    ... 

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

Vea un ejemplo de código here. Este ejemplo mostrará el intersticial tan pronto como se reciba. Alternativamente, es posible que desee esperar hasta el momento adecuado para mostrar el intersticial, como al final de un nivel de juego, y puede marcar interstitial.isReady() para ver si puede mostrar el intersticial.

3

Creo que este código de ejemplo lo ayudará.

How to Add AdMob Interstitial Ads in Your Android Apps

En este ejemplo, se muestra todo el código fuente. Y también proporciona algunas soluciones para errores comunes. Por ejemplo, la solución de error de FailToReceiveAd y ninguna solución devuelta por anuncio. También puedes descargar el código fuente desde allí.

1

FYI, el método interstitial.isReady() ya no es compatible. Este es el método correcto:

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

No te puedes poner en práctica AdListener más, he usado de esta manera:

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); 

lugar de su propio ID en strings.xml nombrado interstitial_ad_unit_id, o reemplazar

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

con su identificación.

-1

llamar a esta función en la apertura de aplicación:

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); 
} 

Entonces usted puede mostrar anuncios:

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

Debe preparar los anuncios antes de mostrarlo. Estos tomaron 3-5 segundos dependiendo de la velocidad de internet del dispositivo.

Cuestiones relacionadas