Иногда AdMob Banner и interstitial не загружается - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть финансовое приложение в Google Play, и у меня в приложении 800 активных пользователей в день.Некоторое время баннер AdMob и interstitialAd не загружаются, и вместо рекламы отображается белый баннер.Код Java ниже:

 AdView adView = (AdView) findViewById(R.id.adView);
            AdRequest adRequest = new AdRequest.Builder()
                   .addTestDevice("CA626566A7B365501AE304BBA64A11D9")
                   .build();
            adView.loadAd(adRequest);

test.xml

<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    ads:adSize="BANNER"
    ads:adUnitId="@string/banner_ad_unit_id" />

AdsUtil.java // Это мой Java-класс interstitialAd, когда пользователь возвращается на любой экран, а затем я вызываю showInterstitial ();.

public class AdsUtil {

    private InterstitialAd mInterstitialAd;
    private Context context;

    public AdsUtil(Context context){
        this.context=context;
        mInterstitialAd = newInterstitialAd();
        loadInterstitial();
    }

    private InterstitialAd newInterstitialAd() {
        InterstitialAd interstitialAd = new InterstitialAd(context);
        interstitialAd.setAdUnitId(context.getString(R.string.interstitial_ad_unit_id));

        interstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
//                mNextLevelButton.setEnabled(true);
            }

            @Override
            public void onAdFailedToLoad(int errorCode) {
//                mNextLevelButton.setEnabled(true);
            }

            @Override
            public void onAdClosed() {
                // Proceed to the next level.
                goToNextLevel();
            }
        });
        return interstitialAd;
    }

    public void showInterstitial() {
        // Show the ad if it's ready. Otherwise toast and reload the ad.
        if(!Utility.getSharedPreferencesBoolean(context, Constant.isPrimeUser) && Constant.adsFlag ) {

            Constant.adsFlag=false;
            timerAds();


            if (mInterstitialAd != null && mInterstitialAd.isLoaded()) {
                mInterstitialAd.show();
            } else {
                goToNextLevel();
            }

        }
    }

    private void loadInterstitial() {
        // Disable the next level button and load the ad.
//        mNextLevelButton.setEnabled(false);
        AdRequest adRequest = new AdRequest.Builder().build();
//                .setRequestAgent("android_studio:ad_template").build();
        mInterstitialAd.loadAd(adRequest);
    }

    private void goToNextLevel() {
        // Show the next level and reload the ad to prepare for the level after.
//        mLevelTextView.setText("Level " + (++mLevel));
        mInterstitialAd = newInterstitialAd();
        loadInterstitial();
    }

    private void timerAds(){
        new CountDownTimer(1000*10*1, 1000) {

            public void onTick(long millisUntilFinished) {

            }

            public void onFinish() {
                Constant.adsFlag=true;
            }
        }.start();
    }


}

1 Ответ

0 голосов
/ 25 апреля 2018

Это по двум причинам:

  1. Для загрузки AD потребуется время, так как она запрашивается при открытии активности.Чтобы решить эту проблему, вы должны предварительно загрузить AD при запуске приложения и запросить отображение на определенном мероприятии, где вам нужно это отобразить.
  2. Это также зависит от подключения к Интернету.Там будет некоторая задержка из-за подключения к интернету.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...