Показывать Admob Interstital только в открытом приложении
Я добавил промежуточную функцию в мое приложение, оно прекрасно работает, но проблема в том, что если пользователь переключается с портретного на ландшафтный режим, объявление снова показывается. Объявление показывается причинно, и это нарушает правила Google.
Как я могу установить промежуточную рекламу только при открытии приложения? Это мой простой код рекламного моб кода
3 ответа
Очень просто, вы не должны отображать надстройку в onAdLoaded
, Это то, что причиняет тебе боль. И это уже нарушает политику Admob независимо от того, поворачиваете ли вы в альбомную или нет.
Вы должны показывать рекламу в естественной точке разрыва в вашем приложении.
Попробуй это -
Файл манифеста -
(Все 3 параметра необходимы для обработки изменения ориентации)
android:configChanges="keyboardHidden|orientation|screenSize">
Файл активности -
boolean isFirstTimeAdLoading = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rotate);
Log.e(TAG, "onCreate()");
if(isFirstTimeAdLoading)
{
// load ad
Log.e(TAG, "Ad Loaded for First Time");
// TODO : Call your Ad Loading Method here
// mark ad as 'already loaded once'
isFirstTimeAdLoading = false;
}
}
@Override
protected void onStart() {
super.onStart();
Log.e(TAG, "onStart()");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.e(TAG, "onConfigurationChanged()");
Log.e(TAG, "isFirstTimeAdLoading = " + isFirstTimeAdLoading);
}
Журналы -
06-12 14:44:15.900 11541-11541/com.example.futech.stackrusamples E/RotateActivity: onCreate()
06-12 14:44:15.900 11541-11541/com.example.futech.stackrusamples E/RotateActivity: Ad Loaded for First Time
06-12 14:44:15.900 11541-11541/com.example.futech.stackrusamples E/RotateActivity: onStart()
06-12 14:44:24.320 11541-11541/com.example.futech.stackrusamples E/RotateActivity: onConfigurationChanged()
06-12 14:44:24.320 11541-11541/com.example.futech.stackrusamples E/RotateActivity: isFirstTimeAdLoading = false
06-12 14:44:26.070 11541-11541/com.example.futech.stackrusamples E/RotateActivity: onConfigurationChanged()
06-12 14:44:26.070 11541-11541/com.example.futech.stackrusamples E/RotateActivity: isFirstTimeAdLoading = false
06-12 14:44:27.880 11541-11541/com.example.futech.stackrusamples E/RotateActivity: onConfigurationChanged()
06-12 14:44:27.880 11541-11541/com.example.futech.stackrusamples E/RotateActivity: isFirstTimeAdLoading = false
Если вы увидите журналы, вы будете знать, что onCreate
вызывается только один раз, и каждый раз, когда ориентация меняется после этого, onConfigurationChanged()
и, следовательно, Activity не воссоздается каждый раз, когда вы поворачиваете экран (я поворачивал свое устройство трижды после начальной загрузки).
Вы можете создать переменную, которая будет подсчитывать, сколько раз было показано объявление. Это будет выглядеть примерно так:
Объявление переменной:
int counter = 0;
Показ промежуточной рекламы:
if (counter == 0 && intersitial.isLoaded()) {
interstitial.show();
counter++;
} else {
AdRequest interstitialRequest = new AdRequest.Builder().build();
interstitial.loadAd(interstitialRequest);
}
Помимо этого, вы можете попробовать добавить android:configChanges="orientation|screenSize"
на ваш AndroidManifest.xml. Это предотвратит перезапуск вашего приложения при изменении ориентации.