Как узнать, было ли загружено объявление AdMob - PullRequest
22 голосов
/ 21 марта 2012

Приложение My Andorid работает в автономном режиме и онлайн.Он отображает рекламу, когда он находится в онлайн-режиме.В сценарии, когда он работает в автономном режиме и пользователь включает интернет-соединение, я хочу знать, загружено ли уже объявление.Если нет, то я бы загрузил новое объявление.Я посмотрел на AdMob API (класс AdView), но не смог найти то, что делает это.

Вот реализация моего AdListener в соответствии с ответом @Hounshell.Но ни один из реализованных здесь методов не выполняется.

        adView.setAdListener(new AdListener() {

        @Override
        public void onReceiveAd(Ad arg0) {
            Toast.makeText(act, "Ad received",Toast.LENGTH_LONG).show();
        }

        @Override
        public void onPresentScreen(Ad arg0) {
        }

        @Override
        public void onLeaveApplication(Ad arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
            Toast.makeText(act, "Failed to receive Ad",Toast.LENGTH_LONG).show();
        }

        @Override
        public void onDismissScreen(Ad arg0) {
            // TODO Auto-generated method stub

        }
    });

И часть main.xml, которая охватывает AdView

<FrameLayout 
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    >
                <com.google.ads.AdView
                    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
                    android:id="@+id/adView"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    ads:adSize="BANNER"
                    ads:adUnitId="xxxxxxxxxxxxxxxx"
                    ads:loadAdOnCreate="true" />
                </FrameLayout>

Ответы [ 4 ]

28 голосов
/ 21 марта 2012

С https://developers.google.com/mobile-ads-sdk/docs/android/intermediate#adlistener

AdView.setAdListener(new AdListener() {
      // Implement AdListener
    });

Ваш AdListener onReceiveAd() будет вызываться, когда объявление доступно, onFailedToReceiveAd() будет вызываться, когда объявление недоступно с кодом, объясняющим почему (включаясеть недоступна и не заполнена)

Обновление:

Тот же базовый ответ, новый URL: https://developers.google.com/admob/android/banner?hl=en

4 голосов
/ 28 декабря 2016

Просто ... !!!

final AdView mAdView = (AdView) findViewById(R.id.adView);
        mAdView.setVisibility(View.GONE);
    mAdView.setAdListener(new AdListener() {
        private void showToast(String message) {
            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onAdLoaded() {
            showToast("Ad loaded.");
            if (mAdView.getVisibility() == View.GONE) {
                mAdView.setVisibility(View.VISIBLE);
            }
        }

        @Override
        public void onAdFailedToLoad(int errorCode) {
            showToast(String.format("Ad failed to load with error code %d.", errorCode));
        }

        @Override
        public void onAdOpened() {
            showToast("Ad opened.");
        }

        @Override
        public void onAdClosed() {
            showToast("Ad closed.");
        }

        @Override
        public void onAdLeftApplication() {
            showToast("Ad left application.");
        }
    });


    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);
3 голосов
/ 14 марта 2017

Я решил эту проблему с небольшим количеством обходного пути.Впервые я проверил, есть ли у AdView пустой тег или нет.

if (adView.getTag() != null && adView.getTag() instanceof Boolean && (Boolean) adView.getTag()) {
        //Adview is already loaded
    }

Если у adView есть объект тега Boolean, и это правда, тогда объявление уже загружено, иначе загрузите объявление иустановить тег -

adView.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                super.onAdLoaded();
                adView.setTag(true); // Set tag true if adView is loaded
            }

            @Override
            public void onAdFailedToLoad(int i) {
                super.onAdFailedToLoad(i);
                adView.setTag(false); // Set tag false if loading failed
            }
        });
0 голосов
/ 21 сентября 2014

вы можете использовать метод isLoaded ().Я использую его в том же контексте, что и вы, и в таймере, чтобы дождаться загрузки объявления.

https://developer.android.com/reference/com/google/android/gms/ads/InterstitialAd.html

...