“加载广告失败: 3”与 DoubleClick

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

当我通过添加来测试一个广告时。AddTestDevice (“ xxx...”)”我得到了测试广告,但是当我删除这一行时,我得到以下错误:

广告: 从广告服务器没有填充

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>

能有什么问题呢?

187786 次浏览

W/Ads: 加载广告失败: 3

根据 文件,您将得到以下错误代码:

Public static final int ERROR _ CODE _ NO _ FILL

广告请求是成功的,但没有广告由于缺乏 广告存货清单。

常值: 3

基于 广告请求成功,但没有广告返回,因为缺乏广告库存时使用 advol 的 admob的职位:

如果您得到了这个错误,那么您的代码就是正确的 AdMob 并不总是为每个请求返回广告。 如果您刚刚注册了 AdMob,这种情况尤其可能发生 发布者 ID,因为它需要一些时间和多个请求 新 ID 开始返回广告。

你的填充率可能低的另一个原因是你没有 启用 AdSense 回填,或者您已经过滤掉了一些广告 您的应用程序设置,看看是否如此。

编辑:

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

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

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

enter image description here

如果错误继续上一次尝试是创建一个新的位置在 admob。这对我有用。在不改变任何东西(除了放置 id 字符串)的情况下,代码广告开始显示。

选项1 : 进入设置-> 搜索 < em > 重置广告 ID -> 点击 < em > 重置广告 ID -> 好的。你应该开始接收广告了

没有搜索选项? 试试 选择二

选项2 : 转到 < strong > 设置-> 谷歌-> 广告-> 重置广告 ID-> 确定

设置中没有 Google 选项? 试试 选择三

选项3 : 查找 < strong > 谷歌设置 (不是设置)-> 广告-> 重置广告 ID

一个新的更新的答案: 许多在今年10月(2018年)因为缺乏隐私政策而被移除的应用程序在回到 Play Store 后无法接收广告。 你必须使用这个表单来请求对应用程序的广告进行“重置”。 < a href = “ https://Support.google.com/admob/contact/奴隶制”rel = “ norefrer”> https://support.google.com/admob/contact/appeal_policy_violation

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

这是一个简单的变通方案(没有解决方案) :

您可以安装 InMobi 之类的中介: Https://developers.google.com/admob/android/mediation/inmobi

这样,不管出于什么原因,如果广告用户没有向你显示广告,你仍然可以从其他广告网络中显示它们。

我把这个放在这里,以防它对谁有用。在尝试了所有论坛和帖子中提到的所有修复之后,对我有效的方法只是使用一个全局 AdRequest对象。当在每个 Activity中的每个 adView上调用 loadAd时,我将使用相同的对象。我已经看到,它往往加载相同的广告对每个 AdView不管活动,但至少现在我得到广告。

W/Ads: 加载广告失败: 3

这意味着你的代码是正确的,但由于少量的请求服务器,你的广告是不可见的。 要检查测试广告,你应该把代码在循环一段时间,你必须给多个请求,使您的 admob 接收多个请求,并将立即加载广告。

添加以下代码

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

多次重新启动应用程序。

开始收到广告后删除循环。

我的应用程序也出现了同样的错误。我正在启动调试配置的应用程序。只要我在同一台设备上运行我的应用程序的 释放版本,问题就解决了。在 Android Studio 中,只需进入 Build-> Generate Signed APK 并选择发行版配置。然后安装发布版本。在你的设备上。在调试配置中,您还可以通过添加 AdRequest 来检查 测试广告是否出现。AddTestDevice (“您的测试设备”)。如果出现广告是可以的,这意味着你只需要发布配置。

如果您发布的应用程序没有 admob,并且它在 Google 开发者控制台(称为“定价和分配”)中的设置为“ CONTAINS ADS”。始终使用带有 logcat 输出的 test id 进行开发。

不要忘记在谷歌 AdMod 上添加 付款方式。这是我的“错误代码3”的问题。 无论如何,当您的帐户谷歌 AdMod 将准备显示广告(为测试设备或真正的用户)他们 给你发邮件,您的帐户验证和准备工作! 写完这封信后,一切都会好起来的。

在新的 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行。

你应该做的是将一部 Android 手机插入你的电脑,然后在 Android Studio 中点击 Logcat,在左上角你应该可以看到一些可供选择的设备。选择您的手机,如果它的列表(它应该)。现在,logcat 将打印您的手机正在打印的所有内容。在过滤条中,输入广告来过滤掉你不需要看到的东西。

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

如果它不是这么说的,而是说了别的什么,那我显然不知道。

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

一旦我更正了位置 ID,所有的工作。

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

在我从带有调试版本的模拟器切换到带有发布版本(通过 adb shell 命令安装)的实际设备之后,我看到了 错误代码3: ERROR _ CODE _ NO _ FILL

我等了12个多小时,在 AdMob 门户上看到了广告请求,但是没有匹配(匹配率为0%)。我转到 Play Console > Store Presence > Pricing & distribution,把 Contains ads的无线电按钮切换到 Yes, it has ads。我甚至尝试上传我的应用包(不发布)到播放控制台。这两个都不管用。

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

考虑到这一点,我继续进行 把我的应用程序发布到了游戏商店的更新,一旦实时更新,我下载了它通过播放商店应用程序在我的真正的手机和广告载入没有问题,我的匹配率现在坐在66% 的 AdMob。从 AdMob 常见问题解答的文章,它听起来像是通常需要几个小时,可能需要长达24小时的广告开始显示。

ad mob FAQ re: how long does it take ads to show

资料来源: https://support.google.com/admob/answer/2993019?hl=en

对我来说,原因是一个设备,小米米9只是不工作了,不显示广告,所以我拉出我的平板电脑,我没有看到任何错误,它显示广告的发布。

可能有一个原因,您可能已经创建您的广告从 adMob 控制台通过点击是,您的应用程序已经在 playstore 和提供您的生活应用程序的网址。现在,在这种情况下,你不能运行你的广告在任何其他项目,是有差异包 ID 然后活的一个(甚至不测试广告)。你必须实现广告在活动项目包含相同的包 ID,在其他情况下将得到广告加载广告失败: 3。

谢谢! 编程愉快!

Your ad units are not displaying ads because you haven't yet verified your address (PIN).

也许这对其他人有帮助,我收到这个通知在我的 AdSense 帐户。 enter image description here

这对我有用


设置-> 谷歌-> 广告-> 重置广告 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'],);

我在 Flutter 得到这个错误。检查调试控制台并找到这个命令

使用. RequestConfiguration. Builder () . setTestDeviceIds (Arrays.asList (“”))

然后将设备 ID 从列表复制到 MobileAdTargetingInfo testDevice,它就会工作了! ! !

  1. 检查并确保您没有链接到两个帐户的广告,因为我在我的情况下错误地做了。

  2. 如果您只是创建您的 admob 帐户等待24小时,然后再试一次

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

检查是否在 mainActivity 中扩展了 AppCompatActivity,在我的例子中,这就是问题所在

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

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

就我而言:
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");}
});

这不是问题。在第一次设计应用程序时,可以使用 AdMob 提供的测试代码。这些代码在您的仿真器和实际设备上非常有用。但是一旦你在 GooglePlay 上发布你的应用程序,这些代码就会立即停止工作。你需要制造你的测试设备。 Https://developers.google.com/admob/android/test-ads

但是您可以使用生活技巧来继续为已发布的应用程序使用测试代码。将 build.gradle (android)文件中的应用程序 ID 更改为不同的名称,这样一切都将正常工作。在将应用程序发布到 Market 之前,不要忘记返回旧名称。

我的设备出了点问题。 我的广告使用 UnitID 测试仿真器没有问题,但是当在我的设备上测试时,它不能使用 message < strong > “未能加载广告: 3”

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

然后我在同一台设备上从 Google Play 内部测试中下载了这个应用程序,这些广告对我很有用,在生产环境中也很有用

enter image description here

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

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

截至2022年1月,应用程序的设置过程已经改变了。向控制台发送了包含以下消息的通知:

所有添加到 AdMob 的新应用程序都需要进行审查 请确保您的 AdMob 应用程序是链接的 支持的应用程序商店,以防止广告服务 链接生成对应用程序的自动审查。

1 -

如您所知,有两种方法可以在 admob 中配置应用程序: 出版未出版的。

如果应用程序已经发布,SDK 实现正确,将不会有运行时错误,只要 广告策略谷歌平台

如果您还没有发布您的应用程序,但想运行和测试广告,您需要坚持最佳实践。

从用于 设置 > 测试设备 > 创建测试的物理设备中添加您的广告 ID/IDFA 可能是一个不错的选择。

这将允许您将设备作为测试保留,即使在商店中发布之后也是如此。

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天,或者在违反广告策略的情况下是永久性的。

4 -

设置好测试设备后,通过在物理设备上设置为 设置 > 谷歌 > 广告 > 重置广告 ID来重置您的广告 ID。

不要忘记在你的分发应用程序中使用你自己的 Unit _ id

了解更多内容请点击这里: < strong > 关于应用程序准备 < a href = “ https://Support.google.com/admob/answer/9388275”rel = “ nofollow noReferrer”> 设置一个测试装置

在我的例子中,如果您为不正确的小部件放置了错误的 ID,那么这个过程可以重现。 例如: 将 interstitialAds ID 放到 AdView Banner 小部件中。

因此,请确保为小部件放置了正确的 ID。

希望它能帮上忙。