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>
Desde https://developers.google.com/mobile-ads-sdk/docs/android/intermediate#adlistener
AdView.setAdListener(new AdListener() {
// Implement AdListener
});
Se llamará a su AdListener onReceiveAd()
cuando haya un anuncio disponible, se onFailedToReceiveAd()
cuando un anuncio no esté disponible con un código que explique por qué (incluida la red no está disponible y no se llena)
Actualizar:
La misma respuesta básica, nueva URL: https://developers.google.com/admob/android/banner?hl=en
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);
puedes usar el método isLoaded () Lo estoy usando en el mismo contexto que usted y dentro de un temporizador para esperar hasta que se cargue el anuncio.
https://developer.android.com/reference/com/google/android/gms/ads/InterstitialAd.html