如何在android中请求新的插页式广告

时间:2016-10-18 16:04:10

标签: android admob interstitial google-admob

我有一项显示全屏图片的活动。有一个下载图像的按钮。在下载之前,我需要展示插页式广告。下载后,我需要请求&加载新的插页式广告。我的编码与以下相同:

public class FullScreenViewActivity extends Activity implements OnClickListener {
         private InterstitialAd interstitial;
         private AdRequest adRequest;
         ....

          @Override
            protected void onCreate(Bundle savedInstanceState) {
             interstitial = new InterstitialAd(FullScreenViewActivity.this);
             interstitial.setAdUnitId(getString(R.string.admob_interstitial_id)); //live ad unit
            ...
             }

            protected void onResume() {
                super.onResume();
                adRequest = getInterstitialAdRequest();
                interstitial.loadAd(adRequest);
                interstitial.setAdListener(new AdListener() {
                    public void onAdClosed() {
                        downloadImage();
                        adRequest = getInterstitialAdRequest();
                        interstitial.loadAd(adRequest);
                    }

                    public void onAdFailedToLoad(int var1) {
                        downloadImage();
                        adRequest = getInterstitialAdRequest();
                        interstitial.loadAd(adRequest);
                    }

                    public void onAdLeftApplication() {
                        downloadImage();
                        adRequest = getInterstitialAdRequest();
                        interstitial.loadAd(adRequest);
                    }
                });
            }

        public AdRequest getInterstitialAdRequest() {
            return new AdRequest.Builder().build();
        }
    }

我的问题是,每次点击下载按钮时,我都会看到同一个广告。我的逻辑有问题吗?或者,每次我要求时,admob都会给我同样的广告吗?

2 个答案:

答案 0 :(得分:1)

我的代码中没有任何内容会导致您重复获得相同的广告。您可能无论身处世界何处,都会有一位特定广告客户购买几乎所有需求,这可能导致单个广告反复出现。通常它是一个临时问题,随着时间的推移会消失。

建议}调用这些方法,但是:

loadAd
当用户点击广告并且响应时打开浏览器(或其他应用)时,会调用

public void onAdFailedToLoad(int var1) { downloadImage(); adRequest = getInterstitialAdRequest(); interstitial.loadAd(adRequest); } public void onAdLeftApplication() { downloadImage(); adRequest = getInterstitialAdRequest(); interstitial.loadAd(adRequest); } 。当他们返回时,onAdLeftApplication仍然会被调用,因此当您的代码成立时,您最终会有两次调用onAdClosed。我删除了loadAd中的那个,并将其保留在onAdLeftApplication

第二次拨打onAdClosed以从loadAd中的广告失败中恢复是一个好主意,但您似乎没有任何断路逻辑或增加时间在重复失败的情况下再次尝试。如果用户的网络连接断开,这可能会导致无限循环(广告#1立即失败,导致广告#2尝试加载,立即失败并导致广告#3 ...)。尝试使用计数器在一定数量后切断尝试,或使用onAdFailedToLoad引入逐渐增加的延迟。

另外,最后一点:如果您正在测试您的应用,则应使用test ads

答案 1 :(得分:0)

最佳使用方式是:

void requestInterstitial(){

    if (!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded()) {
        AdRequest adRequest = new AdRequest.Builder().build();
        mInterstitialAd.loadAd(adRequest);
    }
}