AdMob 插页式广告在恢复时重复加载

AdMob Interstitial Ads Loading Repeatedly onResume

我想在用户打开应用程序并在最小化应用程序后恢复应用程序时加载 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() 并且再次.

您需要尽早发送广告请求,并在调用 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 的插页式最佳做法。