2016-12-25 65 views
0

我想在用戶打開應用程序並在最小化應用程序後恢復應用程序時加載AdMob插頁式廣告。AdMob插頁式廣告反覆加載onResume

我使用下面的代碼加載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設置中顯示一次,但沒有奏效。如何防止廣告重複加載?

回答

1

我想在用戶打開應用程序時加載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); 
} 

然後,把這個你showInterstitial()

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

編輯:只有在你的應用邏輯斷點調用showInterstitial()。在應用啓動或應用退出時展示插頁式廣告不符合AdMob的插頁式最佳做法。