我想在用户打开应用时加载AdMob插页式广告,并在最小化应用后恢复应用。
我使用以下代码加载AdMob插页式广告onResume
:
@Override
protected void onResume() {
super.onResume();
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId(getString(R.string.interstitial_ad));
AdRequest request = new AdRequest.Builder()
.tagForChildDirectedTreatment(true)
.build();
mInterstitialAd.loadAd(request);
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
showInterstitial();
}
});
}
但广告在关闭后会反复加载。我尝试在AdMob设置中限制广告在5分钟内显示一次,但它无法正常工作。如何防止广告重复加载?
答案 0 :(得分:2)
我想在用户打开应用时加载AdMob插页式广告 在最小化应用程序后恢复应用程序。
根据插页式最佳做法,这是禁止的:https://support.google.com/admob/answer/6201362?hl=en&ref_topic=2745287。
您的代码会创建一个电路。您正在活动的onResume()
上加载插页式广告,并在onAdLoaded()
被触发时显示该插页式广告。但是,如果onAdLoaded()
被解雇,则必须从之前可见地显示插页式广告。因此,由于插页式广告仍然存在,它会发送onAdLoaded()
,其中会显示插页式广告(showInterstitial()
),这会发送另一个onAdLoaded()
,这将再次调用showInterstitial()
,试。
您需要尽早发送广告请求,并在致电showInterstitial()
之前使用isLoaded()
检查。
在应用启动时发送广告请求:
// Initialize the Mobile Ads SDK.
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
// Create the InterstitialAd and set the adUnitId.
mInterstitialAd = new InterstitialAd(this);
// Defined in res/values/strings.xml
mInterstitialAd.setAdUnitId(getString(R.string.ad_unit_id));
if (!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded()) {
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd.loadAd(adRequest);
}
然后,将其放入showInterstitial()
:
if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
编辑:仅在应用中的逻辑断点处调用showInterstitial()
。在应用启动或应用退出时显示插页式广告不符合AdMob的插页式最佳做法。