Страницы

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

пятница, 16 ноября 2018 г.

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

Ссылка на офф. документацию : 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()

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

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