Admob:每次展示插页式广告

Admob: Interstitial ads showing every time

我正在完成一个视频应用程序,我在离开视频时显示插页式广告 activity。我只想每 X 分钟显示一次,但似乎每次我离开该屏幕时它都会显示。

这是我的 activity 代码。

创建时:

  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Bundle b = getIntent().getExtras();
  videoId = b.getString("videoId");
  setContentView(R.layout.youtube_player);

  interstitialAd= new InterstitialAd(this);
  interstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
  AdRequest adRequest = new AdRequest.Builder().build();
  interstitialAd.loadAd(adRequest);
  etc...

OnBackPressed:

@Override
public void onBackPressed() {
    ShowAds();

}

private void ShowAds() {
    if (interstitialAd.isLoaded()) {
        interstitialAd.show();
        interstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                super.onAdClosed();
                finish();
            }
        });
    }else{
        super.onBackPressed();
    }
}`

当然是AdMob里面是这样设置的:

注意:我的应用程序未发布,因此显示 "preview" o "sample"。我正在使用我的广告单元 ID:

谢谢,

两个选项:

  1. 当我离开当前 Activity 但仅当我在当前 Activity 完成 X 分钟时才会显示插页式广告。

    boolean isAdShow=false;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        int minute=1;  // X minute
    
        isAdShow=false;
        new CountDownTimer(minute*60000,1000) {
          @Override
          public void onTick(long millisUntilFinished) {
    
          }
    
          @Override
          public void onFinish() {
              isAdShow=true;
          }
      }.start();
    }
    
    private void ShowAds() {
    
       if (interstitialAd.isLoaded() && isAdShow) {
           interstitialAd.show();
           interstitialAd.setAdListener(new AdListener() {
              @Override
              public void onAdClosed() {
                  super.onAdClosed();
                  finish();
              }
           });
        }else{
           super.onBackPressed();
        }
    }
    
  2. 不要等待用户按下后退按钮并离开当前 Activity,只需从定时器的 onFinish() 方法调用 ShowAds()

我建议使用第 1st 个,因为它也不会违反 AdMob 广告政策和用户体验。

编辑

您也可以使用 X 次计数器,例如当 X = 3 即在调用 onCreate() 方法 3 次后有资格展示广告。

public static int adCounter;
public static final int TIME_COUNTER=3;  //Should be always greater than zero

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    adCounter++;
}

private void ShowAds() {

  if (interstitialAd.isLoaded() && adCounter%TIME_COUNTER==0) {
    interstitialAd.show();
    interstitialAd.setAdListener(new AdListener() {
       @Override
       public void onAdClosed() {
           super.onAdClosed();
           finish();
       }
    });
   }else{
    super.onBackPressed();
  }
}