it-swarm.com.ru

Admob Не заполнено с рекламного сервера - не удалось загрузить объявление: 3

Моя проблема в том, что реклама вообще не отображается в моем приложении, тестовом режиме или нет. Я собираюсь оставить этот вопрос специфичным для тестового режима, и, как только я его заработаю, я буду беспокоиться о живых объявлениях.

Информация о развитии

Я использую Eclipse для разработки.

Я настроил рекламу с помощью Google Play Services и Admob в своем приложении для Android, как описано в онлайн-документации, предоставленной Google.

Я добавил свой идентификатор устройства с помощью addTestDevice («xxxxxxxxxxxxxxxx») и несколько раз проверял хешированный идентификатор устройства, чтобы убедиться, что он правильный.

Проблема (см. Ниже информацию журнала)

Когда я запускаю приложение на своем устройстве, реклама вообще не отображается. Это происходит даже тогда, когда я добавил свое устройство в качестве тестового устройства.

Я искал высоко и низко, и обнаружил много подобных проблем, но мне еще предстоит найти ответ на эту конкретную проблему.

Выход LogCat

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

Моя деятельность

   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

Проблемы возникают, только если это конкретное приложение приостановлено в playstore. Возможно, вы можете попытаться изменить имя пакета, а также с новым идентификатором Admob. Существует вероятность того, что конкретный идентификатор AdMob также может быть приостановлен из-за соответствий.

11
pradeep.k

Если вы создали adunit и используете его немедленно, это может показать эту ошибку, попробуйте загрузить рекламу через 30 или более минут.

9
kalandar

Вам нужно использоватьIDкоторые Google предоставит для вас для текущего тестового устройства. Вы можете найти его в logcat, просто найдите что-то вроде этого:

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

Если ваша учетная запись AdMob настроена только на рекламные баннеры и вы используете промежуточную рекламу, вы можете столкнуться с этой проблемой. Мои 2 цента.

2
Tushar Nallan

также возможно удача инвентаря. Я также сталкиваюсь из-за этого . не удалось загрузить объявление: 3

2
Suresh Kerai

В моем случае я обнаружил, что мой платежный адрес не был подтвержден, и реклама была заблокирована. Проверьте платежный адрес, он будет автоматически исправлен. https://www.google.com/adsense/

2
Gkapoor

Я тестировал на Galaxy S4, позже мой друг тестировал на Note 2, и он не показывал рекламный баннер. Следовательно, проблема была в ид. Если вы проводите тестирование, убедитесь, что идентификатор тестового устройства соответствует устройству, на котором вы тестируете.

1
ahmadalibaloch

Если вы поддерживаете приложение, разработанное для семей.

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

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

Просто попробуйте передать идентификатор вашего тестового устройства в 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();

Вы можете найти свой тестовый идентификатор Divece в logCat после того, как без запроса тестового Divece ID AdBuilder: 

I/Ads: Используйте AdRequest.Builder.addTestDevice ("TEST_DEVICE_ID") в получить тестовые объявления на этом устройстве.

0
rnglab

В моем случае мои рекламные баннеры имеют код ответа 3 на некоторых устройствах с высоким API и особенно с широким экраном (я использовал умный размер баннера), изменение зависимости с com.google.Android.gms.ads на com.google.firebase:firebase-ads (если вы используете Firebase) решило мою проблему.

0
Pavel Poley

У меня была эта проблема и сегодня. Мое приложение не было приостановлено, но смена имени apk сработала. Мы переименовали тестовое приложение, чтобы выпустить его в производство; в результате мы изменили название apk. Это испортило нашу рекламу на MoPub и Admob.

0
Adam Link

В моем случае это была ошибка в результате запроса объявления с географическим ограничением из региона, который не поддерживается для этого объявления. Если я жестко закодировал местоположение для пакета запроса рекламы, чтобы он находился в допустимом регионе, или вообще не включал местоположение в запрос, объявление было обработано просто отлично; в противном случае у меня была та же ошибка, что и в консоли.

0
raptors

В моем случае я тестировал с использованием эмулятора и получал ту же ошибку. После смены на телефон все работает.

Попробуйте другое тестовое устройство.

0
Eneas Gesing

Объявления отключены с сервера Admob, ваш код в порядке, попробуйте изменить имя пакета и посмотреть, отображаются ли объявления. Тогда свяжитесь с admob, чтобы увидеть проблему.

0
Safwan Hijazi

У меня тоже была эта пробема. Только когда я зашел на Admob.com и «вручную» добавил свое приложение, я смог получить «Идентификатор рекламного блока». Я поместил эту строку идентификатора рекламного блока в качестве аргумента моего вызова adView.setAdUnitId. Затем я установил и открыл «релиз» APK, сгенерированный через Eclipse. Файл> Экспорт> Экспорт приложения Android 

0
Red Cricket