Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Как запустить рекламу адмоба(видео) при старте приложения?

#java #android #admob #activity_life_cycle


Ссылка на офф. документацию : https://developers.google.com/admob/android/interstitial

Сделал как там все описано - работает, но только при нажатии кнопки. А как сделать,
что бы при каждом запуске приложения отображалась реклама 1 раз? 
    


Ответы

Ответ 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()

Ответ 2



Дык, по правилам Гугла, рекламу Запрещено отображать при старте приложения ? Недопустимые способы размещения межстраничных объявлений

Комментариев нет:

Отправить комментарий