提问者:小点点

Admob:每次都显示的间隙广告


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

这是我的activity密码。

onCreate:

  @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中是这样设置的:

注意:我的应用程序没有发布,所以它正在显示“预览”o“示例”。我正在使用我的广告单元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();
        }
    }
    

    不需要等待用户按下后退按钮并离开当前activity,只需从定时器的onfinish()方法调用showads()即可。

    我将推荐使用1st一个,因为它不会违反AdMob广告策略和用户体验。

    编辑

    您还可以使用X次计数器,例如当X=3时,即在调用oncreate()方法3次之后,可以显示AD。

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