ver recibir quitar publicidad play para google eliminar dejar como bloquear apps app aplicaciones anuncios android api admob adview

android - recibir - Cómo saber si el anuncio de AdMob ha sido cargado



publicidad de google play en android (4)

Mi aplicación Andorid funciona sin conexión y en línea. Muestra anuncios cuando está en modo en línea. En un escenario donde está funcionando en modo fuera de línea y el usuario activa la conectividad a Internet, quiero saber si el anuncio ya está cargado. Si no, entonces cargaría un nuevo anuncio. Miré la API de AdMob (clase AdView) pero no pude encontrar algo que hiciera esto.

Aquí está la implementación de mi AdListener acuerdo con la respuesta de @Hounshell. Pero ninguno de los métodos implementados aquí son ejecutados.

adView.setAdListener(new AdListener() { @Override public void onReceiveAd(Ad arg0) { Toast.makeText(act, "Ad received",Toast.LENGTH_LONG).show(); } @Override public void onPresentScreen(Ad arg0) { } @Override public void onLeaveApplication(Ad arg0) { // TODO Auto-generated method stub } @Override public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) { Toast.makeText(act, "Failed to receive Ad",Toast.LENGTH_LONG).show(); } @Override public void onDismissScreen(Ad arg0) { // TODO Auto-generated method stub } });

Y parte del main.xml que cubre el AdView.

<FrameLayout android:layout_width="fill_parent" android:layout_height="50dp" > <com.google.ads.AdView xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:id="@+id/adView" android:layout_width="fill_parent" android:layout_height="fill_parent" ads:adSize="BANNER" ads:adUnitId="xxxxxxxxxxxxxxxx" ads:loadAdOnCreate="true" /> </FrameLayout>



Resolví este problema con un poco de una solución. Por primera vez, he comprobado si AdView tiene una etiqueta vacía o no.

if (adView.getTag() != null && adView.getTag() instanceof Boolean && (Boolean) adView.getTag()) { //Adview is already loaded }

Si adView tiene un objeto de etiqueta Boolean y es verdadero, entonces el anuncio ya está cargado; de lo contrario, cargue el anuncio y establezca la etiqueta -

adView.setAdListener(new AdListener() { @Override public void onAdLoaded() { super.onAdLoaded(); adView.setTag(true); // Set tag true if adView is loaded } @Override public void onAdFailedToLoad(int i) { super.onAdFailedToLoad(i); adView.setTag(false); // Set tag false if loading failed } });


Simplemente...!!!

final AdView mAdView = (AdView) findViewById(R.id.adView); mAdView.setVisibility(View.GONE); mAdView.setAdListener(new AdListener() { private void showToast(String message) { Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); } @Override public void onAdLoaded() { showToast("Ad loaded."); if (mAdView.getVisibility() == View.GONE) { mAdView.setVisibility(View.VISIBLE); } } @Override public void onAdFailedToLoad(int errorCode) { showToast(String.format("Ad failed to load with error code %d.", errorCode)); } @Override public void onAdOpened() { showToast("Ad opened."); } @Override public void onAdClosed() { showToast("Ad closed."); } @Override public void onAdLeftApplication() { showToast("Ad left application."); } }); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest);