2017-05-22 153 views
0

我正在完成视频应用程序,并且在离开视频活动时显示插页式广告。我只想每X分钟播放一次,但每次我离开该屏幕时都会显示。Admob:每次显示插页式广告

这是我的活动代码。

的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:

注:我的应用程序没有发布,所以它显示“预览”或“样本”。我用我的广告单元ID:

enter image description here

感谢,

回答

1

两个选项:

  1. 的插页式广告显示,当我离开目前的活动,但只有当我完成了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. 不要等到用户按后退按钮离开当前活动,只需拨打ShowAds()从定时器onFinish()方法。

我会建议使用1 ST之一,因为它不违反AdMob广告策略和用户体验了。

编辑

您也可以使用X次计数器,就像当X = 3即3次后调用onCreate()方法让符合资格显示广告。

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

感谢您的回答,我会尽快检查! – emboole

+0

我试过了,它确实有效。主要问题是,当我开始另一个视频柜台重置,所以如果计数器时间比视频大,广告从不显示。我应该把柜台放在父母的活动上吗? – emboole

+1

@emboole我不知道你的应用程序的确切型号是什么,所以我不能说你的要求。这个原型基于'X分钟后的广告展示',因此对于小视频,您将永远不会获得广告,但可以通过获取精确的视频时长或可能以其他方式进行管理。您可以使用“X倍计数器”而不是“X分钟”,请检查我的更新答案。 – Aryan

相关问题