我希望在用户打开应用并最小化应用后恢复应用时加载 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 分钟展示一次,但没有成功。如何防止广告重复加载?
最佳答案
I want to load AdMob interstitial ads when the users opens the app and resumes the app after minimizing the app.
根据插页式最佳实践,这是禁止的:https://support.google.com/admob/answer/6201362?hl=en&ref_topic=2745287 .
您的代码创建了一个电路。您正在 Activity 的 onResume()
上加载插页式广告,并在触发 onAdLoaded()
时显示它。但是,当触发 onAdLoaded()
时,插页式广告之前必须已明显显示。因此,由于插页式广告仍然存在,它将调度 onAdLoaded()
,它显示插页式广告 (showInterstitial()
),这将调度另一个 onAdLoaded()
,它将一次又一次调用showInterstitial()
。
您需要尽早发送广告请求,并使用 isLoaded()
在调用 showInterstitial()
之前进行检查。
在应用启动时发送广告请求:
// 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 的插页式最佳做法。
关于java - AdMob 插页式广告在 Resume 上重复加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41322752/