[android]AdMob 间质广告加载多次 onResume

发布时间: 2017/3/19 17:22:28
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要加载 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();
    }
});
}

但是广告保持反复加载后闭幕。我试图限制一次在 5 分钟在 AdMob 广告显示 settings ,但它不工作。如何防止广告反复加载?

解决方法 1:

我想要加载 AdMob 插播广告,当用户打开该应用程序并恢复后最小化应用程序的应用程序。

这禁止根据间质的最佳做法︰ 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 的间质的最佳做法。

赞助商