При разработке и продвижении приложений мне часто приходится сталкиваться с интеграцией Admob рекламы в мои андроид приложения на Java, по этому я решил запилить небольшой мануал как это сделать.
Также в большинстве мануалов не написано про подгрузку (Preload) рекламы. Из-за я сам поимел много проблем, пытаясь понять почему-же у моих объявлений в приложениях такой низкий Show Rate.
Т.е. ситуация была следующая - реклама гугла отправляла запрос на сервер с целью загрузки(прелоада) рекламы. Далее реклама загружалась в переменную AdRequest adRequest. После чего она привязывалась к блоку интерстишел рекламы через interstitial.loadAd(adRequest) и отображалась через interstitial.show();
И вроде все хорошо, но проблема была в том, что пока отправлялся запрос на рекламу через AdRequest и открывалось активити для показа рекламы, юзеру уже отображалось следующее активити или фрагмент, который перебивали активити с отображением рекламы.
Решение проблемы заключается в том, что отправлять запрос на загрузку рекламы необходимо прямо при загрузке приложения. Таким образом активити с рекламой отобразится мгновенно когда вы это пожелаете. А после отображения рекламы нужно снова отправить запрос на рекламу через interstitial.loadAd(adRequest);
А теперь подробнее:
Я в приложения добавляю Firebase, по этому напишу как это делается при помощи Firebase.
1. Открываем файл build.gradle (Module: app). В него добавляем строку
Вместо 17.1.3 пишем номер последней стабильной версии, которую смотрим тут:
firebase.google.com
2. Далее же нам потребуется 2 метода. 1 метод - для подгрузки (preload) рекламы Admob с сервера гугл. 2 метод - для отображения уже подгруженной рекламы.
1. Код для подгрузки рекламы:
Определяем статичную переменную
После чего добавляем метод, который будет выполнять подгрузку рекламы в переменную interstitial.
Как я уже написал выше надо выполнить этот метод при загрузке приложения. Запихните его в какое-то MainActivity в метод onCreate или в какой-то другой класс, который загружается при загрузке приложения.
2. Отображаем рекламу когда нам это необходимо:
Код отображения рекламы можно сократить до:
Но при этом если будут какие-то проблемы с рекламой, т.е например если она просто не будет отображаться, то в логе LOG вы увидите код ошибки и сможете загуглить причину.
Сейчас посмотрел на код и понял, что можно его оптимизировать в нескольких местах, ну это фигня, главное все работает.
И да, старайтесь не забивать свои приложения рекламой, ставьте таймеры на выполнение отображения рекламы и проверки по этим таймерам. Ибо из-за кривой установки или очень частого отображения рекламы ваше приложение могут забанить.
Также в большинстве мануалов не написано про подгрузку (Preload) рекламы. Из-за я сам поимел много проблем, пытаясь понять почему-же у моих объявлений в приложениях такой низкий Show Rate.
Т.е. ситуация была следующая - реклама гугла отправляла запрос на сервер с целью загрузки(прелоада) рекламы. Далее реклама загружалась в переменную AdRequest adRequest. После чего она привязывалась к блоку интерстишел рекламы через interstitial.loadAd(adRequest) и отображалась через interstitial.show();
И вроде все хорошо, но проблема была в том, что пока отправлялся запрос на рекламу через AdRequest и открывалось активити для показа рекламы, юзеру уже отображалось следующее активити или фрагмент, который перебивали активити с отображением рекламы.
Решение проблемы заключается в том, что отправлять запрос на загрузку рекламы необходимо прямо при загрузке приложения. Таким образом активити с рекламой отобразится мгновенно когда вы это пожелаете. А после отображения рекламы нужно снова отправить запрос на рекламу через interstitial.loadAd(adRequest);
А теперь подробнее:
Я в приложения добавляю Firebase, по этому напишу как это делается при помощи Firebase.
1. Открываем файл build.gradle (Module: app). В него добавляем строку
implementation 'com.google.firebase:firebase-ads:17.1.3'
Вместо 17.1.3 пишем номер последней стабильной версии, которую смотрим тут:
Firebase Android SDK Release Notes

2. Далее же нам потребуется 2 метода. 1 метод - для подгрузки (preload) рекламы Admob с сервера гугл. 2 метод - для отображения уже подгруженной рекламы.
1. Код для подгрузки рекламы:
Определяем статичную переменную
static InterstitialAd interstitial;
После чего добавляем метод, который будет выполнять подгрузку рекламы в переменную interstitial.
Java:
public static void requestNewInterstitial(Context context) {
interstitial = new InterstitialAd(context);
interstitial.setAdUnitId(context.getString(R.string.interstitial_ad));
AdRequest adRequest = new AdRequest.Builder().build();
interstitial.loadAd(adRequest);
}
2. Отображаем рекламу когда нам это необходимо:
Java:
public static void showAdmobAds(Context context) {
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if (interstitial.isLoaded()) {
interstitial.show();
}
else {
Log.d("LOG", "Admob ad wasn't loaded yet");
}
}
@Override
public void onAdFailedToLoad(int errorCode) {
Log.d("LOG", "showAdmobAds onAdFailedToLoad error code: " + errorCode);
}
@Override
public void onAdOpened() {
// Code to be executed when the ad is displayed.
}
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdLeftApplication() {
// Code to be executed when the user has left the app.
}
@Override
public void onAdClosed() {
Log.d("LOG", "Admob ad closed");
}
});
}
Java:
if (interstitial.isLoaded()) {
interstitial.show();
}
else {
Log.d("LOG", "Admob ad wasn't loaded yet");
}
Сейчас посмотрел на код и понял, что можно его оптимизировать в нескольких местах, ну это фигня, главное все работает.
И да, старайтесь не забивать свои приложения рекламой, ставьте таймеры на выполнение отображения рекламы и проверки по этим таймерам. Ибо из-за кривой установки или очень частого отображения рекламы ваше приложение могут забанить.
Последнее редактирование: