Ссылка на офф. документацию : https://developers.google.com/admob/android/interstitial
Сделал как там все описано - работает, но только при нажатии кнопки. А как сделать, что бы при каждом запуске приложения отображалась реклама 1 раз?
Ответ
Надо отследить что пользователь открыл приложение, а не (например) повернул. Это можно сделать проверив if(savedInstanceState==null) это аргумент в onCreate методе активити. После её поворота (пересоздания) этот аргумент уже не null и условие выполнено не будет.
В этом условии сформировать запрос к AdMob
Запустить его и ждать пока реклама не отобразится.
public class MainActivity extends ActionBarActivity
{
boolean adsAlredyShown = false;
InterstitialAd mInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState)
{
Log.i("LOG", "onCreate");
super.onCreate(savedInstanceState);
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); //идентификатор из доков надо заменить на свой
mInterstitialAd.setAdListener(new AdListener()
{
@Override
public void onAdClosed()
{
Log.i("LOG", "onAdClosed");
}
public void onAdLeftApplication()
{
Log.i("LOG", "onAdLeftApplication");
}
@Override
public void onAdLoaded()
{
Log.i("LOG", "onAdLoaded");
mInterstitialAd.show();
}
public void onAdFailedToLoad(int errorCode)
{
Log.e("LOG", "onAdFailedToLoad with errorCode " + errorCode);
}
@Override
public void onAdOpened()
{
Log.i("LOG", "onAdOpened");
//вызывается в момент отображения рекламы.
//и раз она отобразилась ставим флаг в true
//чтобы больше её не показывать
adsAlredyShown = true;
}
});
if(savedInstanceState==null)
{
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd.loadAd(adRequest);
}
else
{
adsAlreadyShown = savedInstanceState.getBoolean("AdsAlreadyShown", false);
//реклама ещё не показывалась
if(!adsAlreadyShown)
{
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd.loadAd(adRequest);
}
}
}
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putBoolean("AdsAlreadyShown", adsAlreadyShown);
}
}
Также, в тот же savedInstanceState можно поместить флаг после показа рекламы и не показывать её пока он true. Этот флаг исчезнет только если активити будет убита системой или вручную методом finish()
Комментариев нет:
Отправить комментарий