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:
谢谢,
两个选项:
当我离开当前 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 次后有资格展示广告。
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();
}
}
我正在完成一个视频应用程序,我在离开视频时显示插页式广告 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:
谢谢,
两个选项:
当我离开当前 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 次后有资格展示广告。
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();
}
}