web-dev-qa-db-de.com

Admob Keine Füllung vom Ad Server - Anzeige konnte nicht geladen werden: 3

Mein Problem ist, dass Anzeigen in meiner App, im Testmodus oder gar nicht angezeigt werden. Ich werde diese Frage für den Testmodus spezifisch halten, und sobald ich das funktioniert, werde ich mir Sorgen um Live-Anzeigen machen.

Entwicklungsinformationen

Ich benutze Eclipse für die Entwicklung.

Ich habe Anzeigen mit Google Play-Diensten und Admob in meiner Android-App eingerichtet, wie in der von Google bereitgestellten Online-Dokumentation beschrieben.

Ich habe meine Geräte-ID mit addTestDevice ("xxxxxxxxxxxxxxxx") hinzugefügt und die gehashte Geräte-ID mehrmals überprüft, um sicherzustellen, dass sie korrekt ist.

Das Problem (siehe unten für Protokollinformationen)

Wenn ich die Anwendung auf meinem Gerät starte, werden überhaupt keine Anzeigen angezeigt. Dies geschieht auch dann, wenn ich mein Gerät als Testgerät hinzugefügt habe.

Ich habe hoch und niedrig gesucht und viele ähnliche Probleme aufgetaucht, aber ich muss noch eine Antwort auf dieses spezielle Problem finden.

LogCat-Ausgabe

10-28 13:56:41.659: I/Ads(1704): Starting ad request.
10-28 13:56:42.187: I/Ads(1704): No fill from ad server.
10-28 13:56:42.187: W/Ads(1704): Failed to load ad: 3
10-28 13:56:42.199: W/Ads(1704): No GMSG handler found for GMSG: gmsg://mobileads.google.com/jsLoaded?google.afma.Notify_dt=1414504602197

Meine Aktivität

   package bb.hoppingbird;

    import org.cocos2d.layers.CCScene;
    import org.cocos2d.nodes.CCDirector;
    import org.cocos2d.opengl.CCGLSurfaceView;

    import com.google.Android.gms.ads.AdListener;
    import com.google.Android.gms.ads.AdRequest;
    import com.google.Android.gms.ads.AdSize;
    import com.google.Android.gms.ads.AdView;
    import com.google.Android.gms.ads.InterstitialAd;

    import Android.app.Activity;
    import Android.content.SharedPreferences;
    import Android.media.MediaPlayer;
    import Android.os.Bundle;
    import Android.support.v4.view.ViewPager.LayoutParams;
    import Android.util.DisplayMetrics;
    import Android.view.KeyEvent;
    import Android.widget.RelativeLayout;
    import Android.widget.Toast;

    public class MainActivity extends Activity {

    private CCGLSurfaceView mGLSurfaceView;

    //<!-- Admob Ads Using Google Play Services SDK -->
    private static final String AD_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx";
    private static final String AD_INTERSTITIAL_UNIT_ID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxx";


    /** The Admob ad. */
    private InterstitialAd interstitialAd = null;
    public AdView adView = null;

    public static MainActivity app;

    public void onCreate(Bundle savedInstanceState)
    {
        app = this;

        super.onCreate(savedInstanceState);

        // set view
        mGLSurfaceView = new CCGLSurfaceView(this);


        //Ads ----------------
        // Create the adView
        RelativeLayout layout = new RelativeLayout(this);
        layout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

        //<!-- Ads Using Google Play Services SDK -->
        adView = new AdView(this);
        adView.setAdSize(AdSize.SMART_BANNER);
        adView.setAdUnitId(AD_UNIT_ID);

        // Add the adView to it
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
        params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);

        adView.setLayoutParams(params);

        layout.addView(mGLSurfaceView);
        layout.addView(adView);

        setContentView(layout);
        //New AdRequest 
        AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("0D47C6944503F0284666D16BB79BF684")
        .build();

    // Start loading the ad in the background.
    adView.loadAd(adRequest);


        //-----------------------------------------------------Interstitial Add
        // Create an Interstitial ad.
        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId(AD_INTERSTITIAL_UNIT_ID);
        interstitialAd.setAdListener(new AdListener() {
              @Override
              public void onAdLoaded() {
                interstitialAd.show();
              }

              @Override
              public void onAdFailedToLoad(int errorCode) {
                  Toast.makeText(getApplicationContext(), "Interstitial Ads loading failed", Toast.LENGTH_SHORT).show();
              }
        });
         // Load the interstitial ad.
        //showInterstitialAds();

        //----------------------
        // set director
        CCDirector director = CCDirector.sharedDirector();
        director.attachInView(mGLSurfaceView);
        director.setAnimationInterval(1/60);

        // get display info
        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        G.display_w = displayMetrics.widthPixels;
        G.display_h = displayMetrics.heightPixels;
        G.scale = Math.max(G.display_w/1280.0f, G.display_h/800.0f);
        G.width = G.display_w / G.scale;
        G.height = G.display_h / G.scale;

        // get data
        SharedPreferences sp = CCDirector.sharedDirector().getActivity().getSharedPreferences("GameInfo", 0);
        G.music = sp.getBoolean("music", true);
        G.sound = sp.getBoolean("sound", true);

        // create sound
        G.soundMenu = MediaPlayer.create(this, R.raw.menu);
        G.soundMenu.setLooping(true);
        G.soundGame = MediaPlayer.create(this, R.raw.game);
        G.soundGame.setLooping(true);
        G.soundCollide = MediaPlayer.create(this, R.raw.collide);
        G.soundJump = MediaPlayer.create(this, R.raw.jump);
        G.soundLongJump = MediaPlayer.create(this, R.raw.long_jump);
        G.soundSpeedDown = MediaPlayer.create(this, R.raw.speed_down);
        G.soundSpeedUp = MediaPlayer.create(this, R.raw.speed_up);
        G.soundDirection = MediaPlayer.create(this, R.raw.direction_sign);
        G.soundClick = MediaPlayer.create(this, R.raw.menu_click);
        G.soundCollect = MediaPlayer.create(this, R.raw.collect);
        G.bgSound = G.soundMenu;

        // show menu
        CCScene scene = CCScene.node();
        scene.addChild(new MenuLayer(true));
        director.runWithScene(scene);
    }  

    @Override
    public void onPause()
    {
        if (adView != null) {
              adView.pause();
            }

        super.onPause();
        G.bgSound.pause();
        CCDirector.sharedDirector().onPause();
    }

    @Override
    public void onResume()
    {
        super.onResume();

        if (adView != null) {
            adView.resume();
          }

        if( G.music ) G.bgSound.start();

        CCDirector.sharedDirector().onResume();
    }

    @Override
    public void onDestroy()
    {
        // Destroy the AdView.
        if (adView != null) {
          adView.destroy();
        }

        super.onDestroy();
        G.bgSound.pause();
        CCDirector.sharedDirector().end();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if( keyCode == KeyEvent.KEYCODE_BACK )
        {
            CCDirector.sharedDirector().onKeyDown(event);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    public void showInterstitialAds()
    {
        runOnUiThread(new Runnable() {
            public void run() {
                 AdRequest interstitialAdRequest = new AdRequest.Builder().build();
                 interstitialAd.loadAd(interstitialAdRequest);
            }
        });
    }
}
25
Vhycko Mayaut

Die Probleme treten nur auf, wenn die betreffende App vom Playstore suspendiert ist. Vielleicht können Sie versuchen, den Paketnamen und und auch mit der neuen Admob-ID zu ändern. Es besteht die Möglichkeit, dass eine bestimmte Admob-ID aufgrund von Compliance-Bedingungen ebenfalls gesperrt wird.

11
pradeep.k

Wenn Sie eine Einheit erstellen und diese sofort verwenden, kann dieser Fehler angezeigt werden. Versuchen Sie, Anzeigen nach 30 Minuten oder mehr zu laden.

9
kalandar

Sie brauchen, um ID dieses Google bieten für Sie für das aktuelle Testgerät zu verwenden. Sie können es in logcat finden, einfach etwas wie das finden:

Ads: Use AdRequest.Builder.addTestDevice("903A70A3D439E256BAED43E65A79928E") to get test ads on this device.
4
Trancer

Wenn Ihr AdMob-Konto nur für Banneranzeigen konfiguriert ist und Sie Interstitial-Anzeigen verwenden, kann dieses Problem auftreten. Meine 2 Cent.

2
Tushar Nallan

es ist auch möglich, Inventar zu haben. Ich bin auch aus diesem Grund Gesicht . Anzeige konnte nicht geladen werden: 3

2
Suresh Kerai

In meinem Fall habe ich festgestellt, dass meine Rechnungsadresse nicht verifiziert wurde und Anzeigen blockiert wurden. Überprüfen Sie die Rechnungsadresse, die automatisch korrigiert wird. https://www.google.com/adsense/

2
Gkapoor

Ich habe auf Galaxy S4 getestet, später hat mein Freund die Note 2 getestet und die Bannerwerbung wurde nicht angezeigt. Daher war das Problem die Testgeräte-ID. Wenn Sie testen, stellen Sie sicher, dass die Testgeräte-ID des Geräts ist, auf dem Sie testen.

1
ahmadalibaloch

Wenn Sie die App für Familien konzipiert haben.

Bundle extras = new Bundle();
extras.putBoolean("is_designed_for_families", true);

AdRequest request = new AdRequest.Builder()
        .addNetworkExtrasBundle(AdMobAdapter.class, extras)
        .build();
1
Orgatres

Übergeben Sie einfach Ihre Testgeräte-ID an adBuilder:

/** adRequest Object For test device */
AdRequest adRequest = new AdRequest.Builder().addTestDevice("TEST_DEVICE_ID").build();

/** adRequest Object For Production Device*/
AdRequest adRequest = new AdRequest.Builder().build();

Sie können Ihre Test-Divece-ID in logCat nach der AdBuilder-Anfrage ohne Test-Divece-ID finden: 

I/Ads: Verwenden Sie AdRequest.Builder.addTestDevice ("TEST_DEVICE_ID") an Holen Sie sich Testanzeigen auf diesem Gerät.

0
rnglab

In meinem Fall haben meine Werbebanner den Antwortcode 3 auf einigen Geräten mit hoher API und insbesondere mit Breitbildschirm (ich habe die intelligente Bannergröße verwendet). Die Änderung der Abhängigkeit von com.google.Android.gms.ads in com.google.firebase:firebase-ads (falls Sie Firebase verwenden) hat mein Problem gelöst.

0
Pavel Poley

Ich hatte auch dieses Problem heute. Meine App wurde nicht angehalten, aber die Änderung des APK-Namens hat funktioniert. Wir hatten eine Test-App umbenannt, um sie für die Produktion freizugeben. wir haben den apk-namen deshalb geändert. Dies führte zu einer fehlerhaften Anzeigenfüllung bei MoPub und Admob.

0
Adam Link

In meinem Fall war dies der Fehler, weil eine geografisch eingeschränkte Anzeige aus einer Region angefordert wurde, die für diese Anzeige nicht unterstützt wird. Wenn ich den Ort für das Anzeigenanforderungs-Bundle hartcodiert habe, um sich innerhalb des akzeptablen Bereichs zu befinden oder überhaupt keinen Ort in der Anforderung enthalten, wurde die Anzeige einwandfrei dargestellt. Ansonsten hatte ich den gleichen Fehler wie OP in der Konsole.

0
raptors

Dies kann daran liegen, dass Sie nicht auf das zu ladende Anzeige warten.

Für mich hat die Implementierung der AdLoaded -Methode von AdListener den Job gemacht.

    mAdInterstitial.loadAd(AdRequest.Builder().addTestDevice("XXXXXXX").build())
    mAdInterstitial.adListener = object : AdListener() {
        override fun onAdLoaded() {
            mAdInterstitial.show()
        }
    }
0
Phil C

In meinem Fall habe ich mit einem Emulator getestet und den gleichen Fehler erhalten. Nach dem Umstieg auf ein Telefon funktioniert alles.

Versuchen Sie ein anderes Testgerät.

0
Eneas Gesing

Anzeigen sind vom Admob-Server deaktiviert. Ihr Code ist in Ordnung. Versuchen Sie, den Paketnamen zu ändern, und prüfen Sie, ob Anzeigen angezeigt werden. Dann wenden Sie sich an admob, um das Problem zu sehen.

0
Safwan Hijazi

Ich hatte auch dieses Problem. Erst als ich zu Admob.com ging und meine App "manuell" hinzufügte, konnte ich meine "Anzeigenblock-ID" erhalten. Ich habe diese Anzeigenblock-ID-Zeichenfolge als Argument für meinen adView.setAdUnitId-Aufruf verwendet. Dann habe ich die über Eclipse generierte "Release" -APK installiert und geöffnet. Datei> Exportieren> Android-Anwendung exportieren 

0
Red Cricket