Показ рекламы AdMob Interstitial даже после закрытия приложения
Я делаю Android-приложение с AdMob, интегрированным в мое приложение, я использую AdMob, чтобы показывать рекламу после 20 секунд загрузки WebView. проблема в том, что когда пользователь закрывает приложение до 20 секунд, рекламные вставки по-прежнему показываются, что противоречит политике Google AdMob. Как сделать так, чтобы при выходе пользователя из действия или приложения рекламная вставка не отображалась?
это мой код:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
interAd = new InterstitialAd(MainActivity.this);
interAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
.build();
interAd.loadAd(adRequest);
interAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
interAd.show();
}
});
interAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
// Code to be executed when the interstitial ad is closed.
Log.i("Ads", "onAdClosed");
}
});
}
} , 20000);
2 ответа
Просто передайте свой обработчик, когда onDestroy вызывается
Handler myHandler = new Handler().postDelayed(new Runnable() {
@Override
public void run() {
interAd = new InterstitialAd(MainActivity.this);
interAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
.build();
interAd.loadAd(adRequest);
interAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if(interAd.isLoaded() && interAd !=null)
interAd.show();
}
});
interAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
// Code to be executed when the interstitial ad is closed.
Log.i("Ads", "onAdClosed");
}
});
}
} , 20000);
@Override
protected void onDestroy() {
Log.d("MainActivty","onDestroy removing callbacks...");
handler.removeCallbacks(myHandler);
interAd =null
super.onDestroy();
}
Добавьте переопределения onBackpress и onDestroy, удалите обратные вызовы обработчиков и установите для переменной interstitialad значение null в каждом из них.
@Override
protected void onBackpressed() {
handler.removeCallbacks(your handler name here);
interAd =null
super.onBackpressed();
}
@Override
protected void onDestroy() {
handler.removeCallbacks(your handler name here);
interAd =null
super.onDestroy();
}
Если вы хотите справиться и с этим, если ваше приложение работает в фоновом режиме, добавьте также oPride OPride.
@Override
protected void onPause() {
handler.removeCallbacks(your handler name here);
interAd =null
super.onPause();
}
Надеюсь, это поможет.
Дайте мне знать, если вам нужна дополнительная помощь.