"加载广告失败。3 "与DoubleClick

143 人关注

我正在使用DoubleClick为我的Android应用程序设置广告,但无法设法显示最终的广告。谁能帮帮我?

当我通过添加".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>

会有什么问题呢?

5 个评论
这个问题是由于一个错误的语言配置造成的。奇怪的是,这种配置在IOS设备上没有产生任何问题,但在Android设备上却有。
能否请你澄清一下,你指的是哪种 "语言配置"?我似乎也面临同样的问题。
This is more than 1 year ago and I don't have access anymore to the DoubleClick account so I can't help you so much. I know I had 3 languages (Fr, Nl, En) with Fr set as default and I couldn't get the NL & EN ones. If I remember well I switched to EN as default language configuration and that's it. I still doesn't understand why this solved my issue so sorry for not helping so much.
在我的情况下,我只改变了其他虚拟设备,广告开始加载。
android
double-click-advertising
MHogge
MHogge
发布于 2015-11-06
28 个回答
blizzard
blizzard
发布于 2020-05-18
已采纳
0 人赞同

W/Ads:载入广告失败。3

按照 文件 你得到了以下错误代码。

公共的静态的最终int ERROR_CODE_NO_FILL

广告请求是成功的,但由于缺乏广告库存,没有广告被返回。 广告库存。

恒定值。3

根据该帖子 onFailedToReceiveAd - 广告请求成功,但由于使用admob和adwhirl时缺乏广告库存而没有返回广告。 :

如果你得到这个错误,那么你的代码是正确的。这个问题是 AdMob并不总是有一个广告来返回每个请求。 这可能会发生,特别是如果你刚刚注册了你的AdMob 发布者ID,因为在新的ID开始返回广告之前,需要一些时间和多次请求。 新ID开始返回广告。

你的填充率低的另一个原因是,你没有启用 启用了AdSense回填,或者你过滤掉了一些广告。请检查 你的应用程序设置,看看是否是这种情况。

EDIT:

更新app-ads.txt并使用 "setTestDeviceIds "在物理设备上测试。

截至编辑这些说明时为止。 https://developers.google.com/admob/android/test-ads 成功了。为了测试广告,我使用了Demo广告单元,需要添加app-ads.txt行,并等待它被admob爬虫抓取(仅在Android-12模拟器上工作),但仍然在Logcat中得到指示,使用 "setTestDeviceIds" - 上述链接下的代码,这原来是需要在通过USB连接的物理设备上显示测试广告。

什么是回填?文件中没有提到它。
先生!我有另一个属于同一AdMob账户的应用程序,它也显示了广告。请解释一下
llb
我有同样的问题,它可以先显示广告,但现在出现了错误3。
奇怪的是,在我身上发生的是测试ID,正如文档所说,是 /6499/example/banner
嗨,我有同样的问题,以前广告显示很好,但现在我得到了错误代码3。
Alexander Ovchinnikov
Alexander Ovchinnikov
发布于 2020-05-18
0 人赞同

在我们的案例中,有一个选项是有帮助的。 正如@blizzard所提到的,在谷歌开发者控制台的应用程序设置中,有一个部分叫做 "定价和分销"。在这个部分有一个复选框 "包含广告"。在我们的案例中,它被禁用。启用后,我们成功地收到了广告。

你可以添加截图或详细路径的定价和分配,请?此外,它是在apps.admob.com仪表板还是在谷歌开发者控制台?
Go to 谷歌游戏控制台 ,之后选择 所有应用 在右侧,选择你的应用程序,选择 Store presence on the right side, in drop down menu select Pricing & distribution
你是个救世主!我的是关闭的,我刚刚启用了它。
这个问题是关于错误代码3。这是关于这个错误代码的答案吗?
现在它在 "应用程序内容 "下,而不是 "定价和分销 "下。
Дмитрий Беляев
Дмитрий Беляев
发布于 2020-05-18
0 人赞同

我的应用程序中也有同样的错误。我是在调试配置中启动该应用程序的。当我运行了 "Debug配置 "后,问题就解决了。 释放 version of my app on the same device. In Android Studio just go to Build -> Generate Signed APK and choose the 释放 configuration. Then install 释放 .apk on your device. In debug configuration you can also check whether your test ads appears by adding AdRequest.Builder.addTestDevice("YOUR TEST DEVICE"). If it's ok with ads appearing, it means you just need 释放 configuration.

如今addTestDevice已被废弃,你必须设置AD单元ID。参考。 developers.google.com/admob/android/test-ads
Marius Razvan Varvarei
Marius Razvan Varvarei
发布于 2020-05-18
0 人赞同

一个新的和更新的答案。 许多在今年10月(2018年)因缺乏隐私政策而被删除的应用程序在重新进入Play Store后无法接收广告。 你必须使用这个表格来请求 "重置 "该应用程序的广告。 https://support.google.com/admob/contact/appeal_policy_violation

我花了几天时间才意识到并找到了答案。 希望你能拿回你的广告。

你能不能提到你在这一节中写的内容。"为了遵守我们的程序政策,你对你的应用程序或账户做了哪些改变?*"
我添加了所需的隐私政策
你的意思是,你在上诉的那个领域复制和粘贴你的隐私政策吗?
事实上,我的应用程序现在可以在playstore提交更新的应用程序和隐私政策后,但Admob广告没有被启用。
@MariusRazvanVarvarei 我无法访问这个表格。它被重定向到 support.google.com/admob/...
Lifes
Lifes
发布于 2020-05-18
0 人赞同

我当时还没有发布带广告的应用程序版本。

我看到 error code 3: ERROR_CODE_NO_FILL 在我从带有调试版本的仿真器切换到带有发布版本的真实设备(通过adb shell命令安装)之后。

我等了12个多小时,我可以在AdMob门户上看到广告请求,但没有匹配(匹配率为0%)。我进入 Play Console > Store Presence > Pricing & distribution ,将 Contains ads 的单选按钮切换到 Yes, it has ads 。我甚至试着把我的应用包(没有发布)上传到Play Console。这两种方法都不奏效。

各种AdMob帮助文章(包括下面链接的文章)提到,如果你一直看到测试广告(标有 "测试广告 "的广告),那么你的代码是有效的,真正的广告应该按预期工作(一旦他们建立了库存)。

考虑到这一点,我继续前进并 将我的应用程序发布到Play Store 一旦更新上线,我通过我的真实手机上的Play Store应用程序下载了它,广告加载没有问题,我的匹配率现在在AdMob上是66%。从AdMob的FAQ文章中,听起来通常需要几个小时,可能需要24小时才能开始显示广告。

Source: https://support.google.com/admob/answer/2993019?hl=en

如果你激活测试广告,不需要你的应用程序在Google Play或其他平台上线:)
Pablo Alfonso
Pablo Alfonso
发布于 2020-05-18
0 人赞同

这是一个简单的workaround(没有解决方案)。

你可以安装一个中介,如InMobi。 https://developers.google.com/admob/android/mediation/inmobi

这样一来,如果由于某种原因,admob没有向你展示广告,你仍然可以从其他广告网络中展示广告。

你知道有什么具体的教程吗?
我只是按照那个链接的说明进行了操作。总之,我发现inmobi不经常显示广告(甚至没有50%的时间),所以我不再使用它了。
现在(2019年8月15日),谷歌Admob正在为我工作(我的应用程序是 "Match4app")。匹配率为100%,美国、加拿大和西班牙的展示率为80%,德国为75%,等等。
Vivek Makwana
Vivek Makwana
发布于 2020-05-18
0 人赞同

W/Ads:载入广告失败。3

这意味着你的代码是正确的,但由于对服务器的请求量较少,你的广告是不可见的。 要检查测试ADS,你应该把代码放在循环中一段时间,你必须给出多个请求,这样你的admob就会收到多个请求并立即加载广告。

添加以下代码

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

多次重新启动你的应用程序。

在你开始接收广告后,删除环路.

这里的accountSettingsBinding是什么?
accountSettingsBinding.adView.loadAd(adRequest); 你可以给你的adview id
爽了。这对我来说确实有效,但在大约24小时内发射了多个请求。谢谢。
Devendra Vaja
Devendra Vaja
发布于 2020-05-18
0 人赞同

Option 1 : Go to Settings-> search 重置广告ID -> click on 重置广告ID -> OK .你现在应该开始接收广告了

没有搜索选项?试试 Option 2

Option 2 : Go to Settings->Google->Ads->重置广告ID->OK

No Google options in Settings? Try Option 3

Option 3 :Look for Google Settings (NOT THE SETTINGS) ->Ads->重置广告ID

这是位于AdMob菜单上的吗?
在任何地方都没有谷歌的 "重置广告ID "菜单。在哪里?
moon
这个解决方案适用于实体安卓设备,只需在设置中搜索广告即可。
Novdar
Novdar
发布于 2020-05-18
0 人赞同

不要忘记添加 支付方式 在谷歌AdMod上。这是我的问题,"错误代码3"。 无论如何,当你的账户谷歌AdMod将准备好显示广告(为测试设备或真实用户),他们 向您发送电子邮件 你的账户已经验证并准备好工作了! 在这封信之后,一切都应该工作正常。

这里也一样。AdMob说:"提供您的付款细节,在AdMob为您提供广告之前,需要这些信息",因此请检查AdMob门户中的付款设置。
Tamim Khan
Tamim Khan
发布于 2020-05-18
0 人赞同

我只是想把这个留在这里,以防对某人有用。在尝试了所有论坛和帖子中提到的所有修复方法后,对我有用的是简单地使用一个全局的 AdRequest 对象。在每个 Activity 中的每个 loadAd 上调用 adView 时,我会使用相同的对象。我已经看到,它倾向于在每个 AdView 上加载相同的广告,无论活动如何,但至少现在我得到了广告。

Arda Kaplan
Arda Kaplan
发布于 2020-05-18
0 人赞同

如果你发布的应用程序没有admob,并且其在谷歌开发者控制台(称为 "定价和分销")中的设置 "CONTAINS ADS "没有切入。始终使用带有logcat输出的测试ID进行开发。

Franklin CI
Franklin CI
发布于 2020-05-18
0 人赞同

在新的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:载入广告失败。3.

你应该做的是把安卓手机插到你的电脑上,然后在安卓工作室点击Logcat,在左上方你应该看到一些设备可以选择。如果你的手机在列表中,就选择它(应该是这样)。现在logcat将打印你的手机正在打印的所有东西。在过滤栏中,输入广告,以过滤掉你不需要看的东西。

然后在你的手机中打开你的应用程序,并检查logcat。确保你的设备不被认为是一个测试设备。如果你看到W/Ads:载入广告失败。3那么这应该意味着问题出在AdMob身上,而不是你。

如果它没有这样说,而是说了别的东西,那么我显然不知道。

Android Geek
Android Geek
发布于 2020-05-18
0 人赞同

可能有一个原因,你可能已经从adMob控制台创建了你的广告,点击是,你的应用程序已经在playstore,并提供你的实时应用程序的网址。现在,在这种情况下,你不能够在任何其他项目中运行你的广告,这是具有不同的包ID然后现场的(甚至不是测试广告)。

编码愉快!

这给出了提示,也很有意义
Alberto Perez
Alberto Perez
发布于 2020-05-18
0 人赞同

这个错误可能是由于太多的原因。 首先尝试使用testAds ca-app-pub id,以避免admob账户问题。

检查你是否扩展了 适应性活动 在你的mainActivity中,在我的例子中这是一个问题。

还要再次检查所有这些步骤 https://developers.google.com/admob/android/quick-start?hl=en-419#import_the_mobile_ads_sdk

Retron
Retron
发布于 2020-05-18
0 人赞同

这不是一个问题。当你第一次设计你的应用程序时,你可以使用由AdMob提供的测试代码。这些代码在你的模拟器和真实设备上都很好用。但只要你在Google Play上发布你的应用程序,这些代码就会立即停止工作。你需要制作你的测试设备。 https://developers.google.com/admob/android/test-ads

但是你可以使用一个生活黑客来继续使用已经发布的应用程序的测试代码。把build.gradle(android)文件中的应用程序ID改成一个不同的名字,一切都会正常。在向市场发布应用程序之前,不要忘记归还旧名称。

I'am Lucy
I'am Lucy
发布于 2020-05-18
0 人赞同

对于那些面临未来问题的人。

这里介绍的信息并不排除其他人已经说过的内容,它们只是补充,还有一些需要考虑的东西。

从2022年1月起,应用程序的设置过程在admob中发生了变化。一条通知被发送到控制台,信息如下。

所有添加到AdMob的新应用都需要经过审查和批准。 批准。请确保您的AdMob应用程序被链接到 到一个受支持的应用程序商店,以防止广告服务 中断。链接会产生对应用程序的自动审查。

如你所知,在admob中,有两种方法来配置一个应用程序。 Published Unpublished.

If the app has already been published,和the SDK is implemented correctly, there will be no runtime errors, as long as the 广告政策 谷歌平台

If you haven't published your app yet but want to run和test ads, you need to adhere to best practices.

添加你的广告ID/IDFA,从你的物理设备上用来测试的 admob > settings > test-devices > create 可能是个好办法。

这将允许你保留你的设备作为测试,即使是在商店里发布之后。

当你调试时,不要在你的代码中使用 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());

始终使用测试广告,以防止交付被暂停。

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*/);
  //...

根据文件规定。

Your app will receive limited ad serving until it is approved during the AdMob preparation process. In order for your app to be reviewed和approved by AdMob, you will need to list it on an AdMob-compatible store和link your app to the app store in your AdMob account.

The suspension of ads can last for up to 30 days, or be permanent in case of violation of 广告政策.

设置好你的测试设备后,重置你的广告ID,方法是进入Settings > Google > Ads > Reset Advertising ID在你的物理设备上。

Don't forget to use your own unit_id在你的分发应用程序中。

在这里了解更多。 关于应用程序的准备工作 设置一个测试装置

Divyaadz
Divyaadz
发布于 2020-05-18
0 人赞同

如果错误继续存在,最后的尝试是在Admob中创建一个新的位置。这对我来说很有效。在没有改变任何东西的情况下(除了位置ID字符串),在代码中的其他地方,广告开始显示。

Artem Mostyaev
Artem Mostyaev
发布于 2020-05-18
0 人赞同

我犯了一个最愚蠢的错误。从一个应用中向 MobileAds.initialize 传递了应用ID,并在另一个admob应用的 loadAd 中使用了放置ID。

一旦我纠正了位置,我就会去工作。

Leon Hillmann
Leon Hillmann
发布于 2020-05-18
0 人赞同

对我来说,原因是有一台设备,即小米9,只是不工作了,不显示广告,所以我拿出我的平板电脑,我看到没有错误,而且在发布中显示了广告。

nAkhmedov
nAkhmedov
发布于 2020-05-18
0 人赞同
Your ad units are not displaying ads because you haven't yet verified your address (PIN).

也许对其他人有帮助,我的AdSense账户收到了这个通知。

Rahul
Rahul
发布于 2020-05-18
0 人赞同

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'],);
    
Kaushik Borah
Kaushik Borah
发布于 2020-05-18
0 人赞同

This works for me

Settings->Google->Ads->Reset advertising ID->OK

但在某些情况下,广告会在上传到Play Store后自动出现。

那些菜单在哪里?
我还不明白你说的是什么类型的菜单。但这个设置是在你的手机设置中。
你能更准确地告诉我它的选项是什么吗?我没有看到任何地方
@DynoCris 这些设置存在于谷歌部分,它的位置在不同的手机上是不同的。 但还有一件事,如果我们不能看到你的广告,并收到 "加载广告失败。3",这完全没有问题。当你把应用上传到Play Store或建立一个已发布的apk版本时,你会看到广告。
在我的情况下,并不奏效
Norbert
Norbert
发布于 2020-05-18
0 人赞同
  • 检查并确保你没有像我一样把两个账户连接到adsense上,我就错了。

  • 如果您刚刚创建了您的Admob账户,请等待24小时并再次尝试。

  • Dyno Cris
    Dyno Cris
    发布于 2020-05-18
    0 人赞同

    我的问题是关于付款的。我刷新了我的支付方式,它帮助了我。

    yacine
    yacine
    发布于 2020-05-18
    0 人赞同

    在我的情况下:
    I/Ads: Ad failed to load : Account not approved yet.
    but you need to implement the listener for knowing the error
    First import the listener : import com.google.android.gms.ads.AdListener;
    第二个创建变量:【替换代码2

                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");}
        
    Luis
    Luis
    发布于 2020-05-18
    0 人赞同

    我有这个问题的设备。 我的广告在UnitID测试仿真器上工作没有问题,但在我的设备上测试时,它不工作,信息是 "未能加载广告。3"

    我的解决方案是在Google Play Console的内部测试环境中测试应用程序,创建用户验证器。

    然后我在同一台设备上从Google Play内部测试中下载了该应用程序,广告对我来说是有效的,而且在生产中也是如此。

    Indra As Lesmana
    Indra As Lesmana
    发布于 2020-05-18
    0 人赞同

    在我的案例中,如果你为不正确的小部件输入错误的ID,就会产生这种情况。 你把interstitialAds的ID放在AdView Banner部件上。

    因此,请确保你为小组件输入正确的ID。

    hope its help.

    Sakrof
    Sakrof
    发布于 2020-05-18
    0 人赞同