Показ рекламы AdMob Interstitial даже после закрытия приложения

Я делаю Android-приложение с AdMob, интегрированным в мое приложение, я использую AdMob, чтобы показывать рекламу после 20 секунд загрузки WebView. проблема в том, что когда пользователь закрывает приложение до 20 секунд, рекламные вставки по-прежнему показываются, что противоречит политике Google AdMob. Как сделать так, чтобы при выходе пользователя из действия или приложения рекламная вставка не отображалась?

это мой код:

new Handler().postDelayed(new Runnable() {
     @Override
     public void run() {
         interAd = new InterstitialAd(MainActivity.this);
         interAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
         AdRequest adRequest = new AdRequest.Builder()
                 .addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
                 .build();
         interAd.loadAd(adRequest);
         interAd.setAdListener(new AdListener() {
                @Override
                public void onAdLoaded() {
                    interAd.show();
         }
     });

     interAd.setAdListener(new AdListener() {
         @Override
        public void onAdClosed() {
            // Code to be executed when the interstitial ad is closed.
             Log.i("Ads", "onAdClosed");
            }
        });
    }
} , 20000);

2 ответа

Просто передайте свой обработчик, когда onDestroy вызывается

Handler myHandler = new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            interAd = new InterstitialAd(MainActivity.this);
            interAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
            AdRequest adRequest = new AdRequest.Builder()
                    .addTestDevice("SEE_YOUR_LOGCAT_TO_GET_YOUR_DEVICE_ID")
                    .build();
            interAd.loadAd(adRequest);
            interAd.setAdListener(new AdListener() {
                @Override

                public void onAdLoaded() {
                   if(interAd.isLoaded() && interAd !=null)
                      interAd.show();
                }
            });

            interAd.setAdListener(new AdListener() {

            @Override
            public void onAdClosed() {
                // Code to be executed when the interstitial ad is closed.
                Log.i("Ads", "onAdClosed");
            }
    });

        }
    } , 20000);



 @Override
    protected void onDestroy() {
        Log.d("MainActivty","onDestroy removing callbacks...");
        handler.removeCallbacks(myHandler);
        interAd =null
        super.onDestroy();

}

Добавьте переопределения onBackpress и onDestroy, удалите обратные вызовы обработчиков и установите для переменной interstitialad значение null в каждом из них.

@Override
protected void onBackpressed() {
    handler.removeCallbacks(your handler name here);
    interAd =null
    super.onBackpressed();
}

@Override
protected void onDestroy() {
    handler.removeCallbacks(your handler name here);
    interAd =null
    super.onDestroy();
}

Если вы хотите справиться и с этим, если ваше приложение работает в фоновом режиме, добавьте также oPride OPride.

@Override
protected void onPause() {
    handler.removeCallbacks(your handler name here);
    interAd =null
    super.onPause();
 }

Надеюсь, это поможет.

Дайте мне знать, если вам нужна дополнительная помощь.

Другие вопросы по тегам