java - AdMob 插页式广告在 Resume 上重复加载

标签 java android android-studio admob interstitial

我希望在用户打开应用并最小化应用后恢复应用时加载 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/

相关文章:

java - log4j2.xml 文件在 tomcat web 应用程序中的正确位置

android - 适用于 Android 的良好预建 GNU 工具链?

android - 在一个 Android Studio 项目中使用多个模块

java - Android 复选框选中一个变量

java - 如何从 Firebase 存储获取 URL getDownloadURL

Android Studio - 将 com.google.android.gms 的版本更新到 11.6.0

Android 测试依赖于库项目上的测试类

java - 在没有spring boot的情况下使用spring mvc项目配置angular 2

java - 加载带有 exif 和/或损坏的元数据的 jpeg 图像

java - 在 Eclipse Debugger 中,获取嵌入列表层次结构中变量的索引位置