webentwicklung-frage-antwort-db.com.de

Wie Sie wissen, ob die AdMob-Anzeige geladen wurde

Meine Andorid-App funktioniert offline und online. Es zeigt Anzeigen an, wenn es sich im Online-Modus befindet. In einem Szenario, in dem es im Offline-Modus arbeitet und der Benutzer die Internetverbindung aktiviert, möchte ich wissen, ob die Anzeige bereits geladen ist. Wenn nicht, würde ich eine neue Anzeige laden. Ich habe mir AdMob API (AdView-Klasse) angesehen, konnte aber nichts finden, was dies tut. 

Hier ist die Implementierung meiner AdListener entsprechend der Antwort von @Hounshell. Aber keine der hier implementierten Methoden wird ausgeführt.

        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

        }
    });

Und ein Teil der main.xml, die das AdView abdeckt

<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>
22

Von https://developers.google.com/mobile-ads-sdk/docs/Android/intermediate#adlistener

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

Die onReceiveAd() Ihres AdListeners wird aufgerufen, wenn eine Anzeige verfügbar ist. onFailedToReceiveAd() wird aufgerufen, wenn keine Anzeige mit einem Code verfügbar ist, der den Grund dafür erklärt (einschließlich Netzwerk nicht verfügbar und keine Füllung).

Aktualisieren:

Gleiche grundlegende Antwort, neue URL: https://developers.google.com/admob/Android/banner?hl=de

26
Hounshell

Einfach...!!!

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
Waqar Vicky

Ich habe dieses Problem mit einer Problemumgehung gelöst. Zum ersten Mal habe ich überprüft, ob AdView ein leeres Tag hat oder nicht.

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

Wenn adView ein Boolean-Tag-Objekt hat und dies wahr ist, ist die Anzeige bereits geladen. 

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
            }
        });
1
mjosh