首页 文章

AdMob非页内广告重复加载onResume

提问于
浏览
0

我想在用户打开应用时加载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分钟内显示一次,但它无效 . 如何防止广告重复加载?

1 回答

  • 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);
    }
    

    然后,把它放在你的_2757160中:

    if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
                mInterstitialAd.show();
    }
    

    EDIT :仅在应用中的逻辑断点处调用 showInterstitial() . 在应用启动或应用退出时显示插页式广告不符合AdMob的插页式最佳做法 .

相关问题