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

Я настраиваю объявление в своем приложении Android с помощью DoubleClick и не могу показать окончательное объявление, может кто-нибудь мне помочь?

Когда я тестирую объявление, добавляя ".addTestDevice("xxx...")", я получаю тестовое объявление, но при удалении этой строки я получаю следующую ошибку:

W/Ads: без заполнения с рекламного сервера

W/Ads: Не удалось загрузить объявление: 3

Я установил свое объявление так:

PublisherAdRequest adRequest = new PublisherAdRequest.Builder().build();
mPublisherAdView.loadAd(adRequest);

И мой издатель выглядит так:

    <com.google.android.gms.ads.doubleclick.PublisherAdView
        android:id="@+id/pronostics_ad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_gravity="center"

        ads:adSize="BANNER"
        ads:adUnitId="@string/ad_unit_pronostic">
    </com.google.android.gms.ads.doubleclick.PublisherAdView>

Что может быть не так?

Заранее благодарю за ваши ответы.

30 ответов

Решение

W/Ads: Не удалось загрузить объявление: 3

Согласно Документации вы получаете следующий код ошибки:

общедоступная статическая финальная int ERROR_CODE_NO_FILL

Запрос объявления был успешным, но объявление не было возвращено из-за отсутствия рекламных ресурсов.

Постоянное значение: 3

На основании сообщения onFailedToReceiveAd - запрос объявления выполнен успешно, но объявление не возвращено из-за отсутствия рекламных ресурсов при использовании admob с adwhirl:

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

Другая причина, по которой ваш показатель заполнения может быть низким, заключается в том, что у вас не включена обратная засыпка AdSense или вы отфильтровали некоторые объявления. Проверьте настройки вашего приложения, чтобы увидеть, если это так.

Есть один вариант, который помог в нашем случае. Как упомянуто @blizzard в настройках вашего приложения в консоли разработчика Google, есть раздел, который называется "Ценообразование и распространение". В этом разделе есть флажок "СОДЕРЖИТ ОБЪЯВЛЕНИЯ". В нашем случае это было отключено. После включения мы успешно получили рекламу. Надеюсь, поможет.

У меня была та же ошибка в моем приложении. Я запускал приложение в отладочной конфигурации. Проблема была решена, как только я запустил версию приложения на том же устройстве. В Android Studio просто зайдите в Build -> Generate Signed APK и выберите конфигурацию выпуска. Затем установите релиз.apk на вашем устройстве. В конфигурации отладки вы также можете проверить, появляются ли ваши тестовые объявления, добавив AdRequest.Builder.addTestDevice("ВАШЕ ИСПЫТАТЕЛЬНОЕ УСТРОЙСТВО"). Если все в порядке с показом рекламы, значит, вам просто нужна конфигурация релиза.

Один новый и обновленный ответ: многие приложения, которые были удалены в октябре (2018 г.) из-за отсутствия Политики конфиденциальности, не могут получать рекламу после того, как вернутся в Play Store. Вы должны использовать эту форму, чтобы запросить "сброс" для объявлений этого приложения. https://support.google.com/admob/contact/appeal_policy_violation

Мне понадобилось несколько дней, чтобы осознать и найти ответ. Надеюсь, вы вернете свои объявления.

Я еще не опубликовал версию своего приложения с рекламой.

Я видел код ошибки 3: ERROR_CODE_NO_FILL после того, как переключился с эмуляторов с отладочной версией на реальное устройство с версией выпуска (установленной с помощью команд оболочки adb).

Я ждал более 12 часов и видел запросы объявлений на портале AdMob, но совпадений не было (коэффициент соответствия 0%). Я пошел вPlay Console > Store Presence > Pricing & distribution и переключил переключатель на Contains ads к Yes, it has ads. Я даже попытался загрузить свой комплект приложений (без публикации) в Play Console. Ни то, ни другое не помогло.

В различных справочных статьях AdMob (включая ссылку ниже) упоминается, что если вы видели тестовые объявления (объявления с пометкой "Test Ad"), значит, ваш код работает, и настоящие объявления должны работать должным образом (после того, как они накапливают инвентарь)..

Имея это в виду, я пошел дальше и опубликовал свое приложение в Play Store, и как только обновление было опубликовано, я загрузил его через приложение Play Store на свой настоящий телефон, и реклама загрузилась без проблем, и мой рейтинг совпадений теперь составляет 66. % в AdMob. Судя по статье часто задаваемых вопросов по AdMob, показ рекламы обычно занимает несколько часов, а может потребоваться до 24 часов.

Источник: https://support.google.com/admob/answer/2993019?hl=en

W/Ads: Не удалось загрузить объявление: 3

Это означает, что ваш код правильный, но из-за меньшего количества запросов к серверу ваши объявления не видны. Чтобы проверить тестовый ADS, вы должны поместить код в цикл на некоторое время, и вам нужно дать несколько запросов, чтобы ваш admob получил несколько запросов и немедленно загрузил рекламу.

Добавьте код ниже

for(int i=0;i<1000;i++) {
            AdRequest adRequest = new AdRequest
                    .Builder()
                    .addTestDevice("B431EE858B5F1986E4D89CA31250F732")
                    .build();
            accountSettingsBinding.adView.loadAd(adRequest);
        } 

Перезапустите приложение несколько раз.

Удалите Цикл после того, как вы начнете получать рекламу.

Это простой обходной путь (без решения):

Вы можете установить посредник, такой как InMobi: https://developers.google.com/admob/android/mediation/inmobi

Таким образом, если по какой-либо причине admob не показывает вам рекламу, вы все равно можете показывать их из других рекламных сетей.

Вариант 1: Зайдите в Настройки-> Поиск Сбросить рекламный идентификатор -> нажмите Сбросить рекламный идентификатор -> ОК. Вы должны начать получать объявления сейчас

Нет варианта поиска? Попробуйте вариант 2

Вариант 2. Перейдите в Настройки-> Google-> Реклама-> Сбросить идентификатор рекламы-> ОК.

Нет настроек Google в настройках? Попробуйте вариант 3

Вариант 3: искать настройки Google (НЕ НАСТРОЙКИ)-> Реклама-> Сбросить рекламный идентификатор

Не забудьте добавить способы оплаты в Google AdMod. Это была моя проблема с "кодом ошибки 3". В любом случае, когда ваша учетная запись Google AdMod будет готова к показу рекламы (для проверенных устройств или реальных пользователей), они отправят вам электронное письмо о том, что ваша учетная запись подтверждена и готова к работе! После этого письма все должно работать нормально.

Эта ошибка может быть вызвана слишком большим количеством причин. Сначала попробуйте использовать идентификатор testAds ca-app-pub, чтобы избежать проблем с аккаунтом admob.

Убедитесь, что вы расширяете AppCompatActivity в своем mainActivity, в моем случае это была проблема

Также проверьте все эти шаги еще раз https://developers.google.com/admob/android/quick-start?hl=en-419

Я просто собираюсь оставить это здесь, если это работает для кого-то. После того, как все исправления, упомянутые на всех форумах и в постах, были исправлены, я просто использовал глобальный AdRequest объект. Я бы использовал тот же объект при вызове loadAd на каждой adView в каждом Activity, Я видел, что он имеет тенденцию загружать одно и то же объявление на каждом AdView независимо от активности, но по крайней мере теперь я получаю рекламу.

В новой версии admob ИСПОЛЬЗУЙТЕ это:

// Загрузите ваш adView перед

    adView.setAdListener(new AdListener() {    


        @Override
        public void onAdFailedToLoad(int errorCode) {
            // Code to be executed when an ad request fails.
            Toast.makeText(Your current activity.this, "Ad failed: " + errorCode, Toast.LENGTH_SHORT).show();
        }




    });

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

Если вы можете видеть тестовые объявления на эмуляторе и тестовых устройствах, это обычно означает, что AdMob (при условии, что вы используете AdMob) не может вернуть рекламу из-за отсутствия рекламных ресурсов. В этом случае при просмотре Logcat вы должны увидеть строку W/Ads: Failed to load ad: 3.

Что вам нужно сделать, так это подключить телефон Android к компьютеру, а затем в Android Studio нажмите Logcat, и в левом верхнем углу вы должны увидеть несколько устройств для выбора. Выберите свой телефон, если он в списке (он должен быть). Теперь logcat будет печатать все, что печатает ваш телефон. На панели фильтров введите объявления, чтобы отфильтровать ненужные вам вещи.

Затем откройте свое приложение в телефоне и проверьте logcat. Убедитесь, что ваше устройство не считается тестовым. Если вы видите W/Ads: Failed to load ad: 3, значит, проблема связана с AdMob, а не с вами.

Если он не говорит этого, а говорит что-то еще, то я, очевидно, не знаю.

Это не проблема. Когда вы впервые создаете свое приложение, вы можете использовать тестовые коды, предоставленные AdMob. Эти коды отлично работают на ваших эмуляторах и на реальных устройствах. Но как только вы публикуете свое приложение в Google Play, эти коды сразу перестают работать. Вам нужно сделать свои тестовые устройства. https://developers.google.com/admob/android/test-ads

Но вы можете использовать лайфхак, чтобы продолжить использовать тестовые коды для уже опубликованного приложения. Измените идентификатор приложения в файле build.gradle(android) на другое имя, и все будет работать. Не забудьте вернуть старое название перед публикацией приложения в Маркете.

Если ваше опубликованное приложение не имеет AdMob и его настройки в консоли разработчика Google (называемые "Ценообразование и распространение") не отображаются, "СОДЕРЖИТ РЕКЛАМУ". Всегда разрабатывайте с идентификатором теста с выходом logcat.

Для тех, кто сталкивается с будущими проблемами.

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

По состоянию на январь 2022 года процесс установки приложения изменился в admob. На консоль было отправлено уведомление со следующим сообщением:

Все новые приложения, добавленные в AdMob, должны быть проверены и одобрены. Убедитесь, что ваши приложения AdMob связаны с поддерживаемым магазином приложений, чтобы показ рекламы не прерывался. Связывание генерирует автоматический обзор приложений.

1-

Как известно, настроить приложение в admob можно двумя способами: Published и Unpublished.

Если приложение уже опубликовано и SDK реализован правильно, ошибок выполнения не будет, если соблюдаются политики AdSense и платформа Google .

Если вы еще не опубликовали свое приложение, но хотите запустить и протестировать рекламу, вам необходимо придерживаться рекомендаций.

Добавьте свой рекламный идентификатор/IDFA с вашего физического устройства, используемого для тестирования, в admob> settings> test-devices> create может быть хорошим вариантом.

Это позволит вам сохранить ваше устройство в качестве теста даже после публикации в магазине.

2-

Не используй AdRequest.Builder.addTestDevice()в вашем коде при отладке. Это было прекращено.

В целях отладки используйте RequestConfiguration.Builder.setTestDeviceIds()вместо. У вас будет что-то вроде этого:

      public static final String TEST_J7 = "F1FDCA11111AF1111111FF11C1111111";
public static final String TEST_GRAN_PRIME = "F1FDCA11111AF1111111FF11C1111111";
public static final String TEST_XIAOMI = "F1FDCA11111AF1111111FF11C1111111";
public static final String TEST_EMULATOR = AdRequest.DEVICE_ID_EMULATOR;

// if you don't know the id, look it up in Logcat in a normal request
public void newConfiguration() {
  String[] tests = {TEST_EMULATOR, TEST_J7, TEST_GRAN_PRIME, TEST_XIAOMI};

  MobileAds.setRequestConfiguration(new RequestConfiguration.Builder()
     .setTestDeviceIds(Arrays.asList(tests)).build());
}

3-

Всегда используйте тестовые объявления, чтобы предотвратить приостановку доставки:

      public static final String TEST_UNIT_BANNER = "ca-app-pub-3940256099942544/6300978111";
public static final String TEST_UNIT_REWARD = "ca-app-pub-3940256099942544/5224354917";
public static final String TEST_UNIT_NATIVE = "ca-app-pub-3940256099942544/2247696110";
public static final String TEST_UNIT_INTERSTITIAL = "ca-app-pub-3940256099942544/1033173712";


public void loadAd(boolean is_test_device, String unit) {
  if (is_test_device) {
    newConfiguration();
  }
  AdRequest request = new AdRequest.Builder().build();

  AdView banner = new AdView(c);
  banner.setAdUnitId(is_test_device ? TEST_UNIT_BANNER : unit);
  banner.loadAd(request);
  //...
  InterstitialAd.load(c, is_test_device ? TEST_UNIT_INTERSTITIAL : unit, request, /*callback*/);
  //...
  RewardedInterstitialAd.load(c, is_test_device ? TEST_UNIT_REWARD : unit, request, /*callback*/);
  //...
}

Согласно документации:

Ваше приложение будет получать ограниченный показ рекламы, пока оно не будет одобрено в процессе подготовки AdMob. Чтобы ваше приложение было рассмотрено и одобрено AdMob, вам нужно разместить его в магазине, совместимом с AdMob, и связать свое приложение с магазином приложений в своем аккаунте AdMob.

Приостановка рекламы может длиться до 30 дней или быть постоянной в случае нарушения правил AdSense.

4-

После настройки тестового устройства сбросьте свой рекламный идентификатор, выбрав « Настройки» > «Google» > «Реклама» > «Сбросить рекламный идентификатор » на физическом устройстве.

Не забудьте использовать свой собственный unit_id в своем приложении для распространения.

Узнайте больше здесь: О готовности приложения Настройка тестового устройства

Это может быть одна из причин, по которой вы могли создать свою рекламу из консоли adMob, нажав Да, что ваше приложение уже находится в игровом магазине и указав URL-адрес вашего действующего приложения. Теперь в этом случае вы не сможете запускать свою рекламу в каких-либо других проектах. который имеет идентификатор пакета diff, а затем живую (даже не тестовую рекламу). Вы должны реализовать рекламу в реальном проекте, содержащем тот же идентификатор пакета, а в другом случае будет получаться реклама, не удалось загрузить объявление: 3.

Спасибо! Удачного кодирования!

В моем случае это может воспроизвести, если вы укажете неправильный идентификатор для неправильного виджета. пример: вы помещаете идентификатор interstitialAds в виджет AdView Banner.

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

надеюсь на его помощь.

Установите подписанный APK, это сработает для меня после 3 недель попыток

В моем случае мое приложение для Android нормально показывало рекламу и внезапно перестало показывать рекламу и получило сообщение «Не удалось загрузить рекламу: 3». Мой код на 100% правильный, и моя учетная запись admob не имеет ограничений. Наконец, я вошел в свою учетную запись AdSense, которая связана с моим admob, и обнаружил, что AdSense перестал показывать рекламу моему приложению из-за необходимости проверки личности.

  1. Проверьте и убедитесь, что вы не связали две учетные записи с AdSense, как я по ошибке сделал в моем случае.

  2. если вы просто создаете свою учетную запись admob, подождите 24 часа и попробуйте еще раз

Для меня причина заключалась в том, что одно устройство, Xiaomi Mi 9, просто больше не работало и не отображало рекламу, поэтому я вытащил свой планшет, и я не увидел ошибок, и он отображал рекламу в выпуске.

I've made the stupidest error. Passed app id into MobileAds.initialize from one app and used placement id in loadAd from another admob app.

Once I corrected placement id all come to work.

Это работает для меня


Настройки->Google-> Реклама-> Сбросить рекламный ID-> ОК

Но в некоторых случаях реклама появляется автоматически после загрузки в игровой магазин.

W/Ads: не удалось загрузить объявление: 3

Означает: запрос объявления был успешным, но объявление не было возвращено из-за отсутствия рекламных ресурсов.

Итак, в моем случае я прокомментировал keywords:свойство для загрузки всех типов рекламы. Теперь мое объявление загружается правильно.

static final MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
        testDevices: testDevice != null ? <String>[testDevice] : null,
        nonPersonalizedAds: true,
        //keywords: <String>['Fitness', 'Yoga', 'Health', 'Exercise', 'Game', 'Doctor', 'Medical'],);
Your ad units are not displaying ads because you haven't yet verified your address (PIN).

Возможно, это поможет другим, я получил это уведомление на свой аккаунт AdSense.

Моя проблема была с оплатой. Я обновил свой способ оплаты, и это мне помогло.

В моем случае:
I/Ads: Ad failed to load : Account not approved yet.

но вам нужно реализовать слушателя, чтобы узнать об ошибке

Сначала импортируйте слушателя: import com.google.android.gms.ads.AdListener;
Вторая переменная создания: private final String TAG2 = com.ringtones.splash.class.getSimpleName();

            mAdView.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {Log.d(TAG2, "google banner ad loaded"); }
            @Override
            public void onAdFailedToLoad(LoadAdError adError) {Log.d(TAG2, "google banner ad failed to load : "+ adError.getMessage());}
            @Override
            public void onAdOpened() {Log.d(TAG2, "google banner ad opened");}
            @Override
            public void onAdClicked() {Log.d(TAG2, "google banner ad clicked");}
            @Override
            public void onAdLeftApplication() {Log.d(TAG2, "google banner ad left application");}
            @Override
            public void onAdClosed() {Log.d(TAG2, "google banner ad closed");}
        });

У меня была такая проблема с устройством. Моя реклама работала без проблем с тестовым эмулятором UnitID, но при тестировании на моем устройстве он не работал с сообщением «не удалось загрузить рекламу: 3».

Мое решение состояло в том, чтобы протестировать приложение во внутренней тестовой среде Google Play Console, создав пользовательские верификаторы.

Затем я загрузил приложение на то же устройство из внутреннего тестирования Google Play, и реклама работала на меня, и оно также работало в продакшене.

Если ошибка не исчезла, попытайтесь создать новое место в admob. Это работает для меня. Не изменяя ничего (кроме строки идентификатора места размещения), в коде объявления начинают показываться.

Я получал эту ошибку во Flutter. Проверьте консоль отладки и найдите эту команду

Use.RequestConfiguration.Builder(). SetTestDeviceIds(Arrays.asList("")

И скопируйте идентификатор устройства из списка в MobileAdTargetingInfo testDevices, и он будет работать!!!

Другие вопросы по тегам