我正在使安卓应用程序与AdMob集成在我的应用程序中,我使用AdMob来显示广告后20秒的WebView加载。问题是,当用户在20秒内关闭应用程序时,间隙广告仍然显示,这违反了谷歌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);
发布于 2017-09-24 01:45:09
在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();
}
发布于 2017-09-24 01:44:14
添加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();
}
如果你想在你的应用程序进入后台时也处理这个问题,那么也要添加onPause overide。
@Override
protected void onPause() {
handler.removeCallbacks(your handler name here);
interAd =null
super.onPause();
}
希望这能有所帮助。
如果你需要进一步的帮助,请告诉我。
https://stackoverflow.com/questions/46382451
复制相似问题