Admob广告无法加载-加载广告失败:0

54
我正在尝试加载Admob原生广告。之前(在应用程序更新之前)广告可以正常显示,但现在它们没有显示。我已经发布了下面的代码、xml和Logcat。 代码
NativeExpressAdView adView = (NativeExpressAdView) myView.findViewById(R.id.adView);

    AdRequest request = new AdRequest.Builder()
            .addTestDevice("5BCFF0AAE83AF424648A954038C71DE6")
            .addTestDevice("A5E3E2068BD88202CBC281AD76984BEE")//infocus
            .build();

    adView.loadAd(request);

XML

:可扩展标记语言,用于描述和传输数据。
<com.google.android.gms.ads.NativeExpressAdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            ads:adSize="320x150"
            ads:adUnitId="ca-app-pub-5059726881726792/6223900262"></com.google.android.gms.ads.NativeExpressAdView>

日志记录器

07-14 20:39:57.349 11508-11508/? W/Ads: Failed to load ad: 0
07-14 20:40:07.373 11508-11663/? W/Ads: There was a problem getting an ad response. ErrorCode: 0

Fail to forward ad response.
                                  android.os.DeadObjectException
                                      at android.os.BinderProxy.transactNative(Native Method)
                                      at android.os.BinderProxy.transact(Binder.java:511)
                                      at com.google.android.gms.ads.internal.request.ab.a(:com.google.android.gms:93)
                                      at com.google.android.gms.ads.internal.request.service.i.run(:com.google.android.gms:638)
                                      at com.google.android.gms.ads.internal.util.u.call(:com.google.android.gms:1055)
                                      at com.google.android.gms.ads.internal.util.v.run(:com.google.android.gms:75)
                                      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                      at java.lang.Thread.run(Thread.java:818)

07-14 20:40:19.539 1975-4922/? W/Ads: Fail to forward ad response.
                                  android.os.DeadObjectException
                                      at android.os.BinderProxy.transactNative(Native Method)
                                      at android.os.BinderProxy.transact(Binder.java:511)
                                      at com.google.android.gms.ads.internal.request.ab.a(:com.google.android.gms:93)
                                      at com.google.android.gms.ads.internal.request.service.i.run(:com.google.android.gms:638)
                                      at com.google.android.gms.ads.internal.util.u.call(:com.google.android.gms:1055)
                                      at com.google.android.gms.ads.internal.util.v.run(:com.google.android.gms:75)
                                      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                      at java.lang.Thread.run(Thread.java:818)

2
我遇到了完全相同的问题,我找不到解决方案。 - Lampione
17个回答

77

您的代码没有问题,一切都很好。您只需要等待一下。因为您的广告 ID 是新创建的,所以需要一些时间从 Google 服务器获取广告。您可以通过添加早期应用程序的横幅/插屏广告 ID 进行验证,您将看到它们有效。所以请给它一些时间,它很快就会工作。至少对我来说,这种情况总是发生。不能确定对您是否适用,但为什么不试试呢?


18
“等一下”在我的情况下意味着大约1小时的时间。 - t0m
4
我不知道为什么,但我已经等了两天以上。还是出现错误。我尝试使用另一个 Admob 帐户创建另一个应用程序。它可以正常运行。我想使用我的主帐户。有什么建议吗? - Mr Special
@pinkcat 是的,我记得从谷歌收到官方电子邮件通知我的AdMob账户已经激活需要等待很长时间。然后我就可以正常使用AdMob了。也许你应该等待谷歌的官方电子邮件。 - Mr Special
@MrSpecial 我收到了谷歌的官方电子邮件,关于账户激活,但我收到了一封谷歌的官方信函,关于账户激活,但广告从未显示(只显示测试广告)。 - pinkcat
我的应用程序已经在Play商店上架了10天。但仍然没有显示广告...出现了相同的错误,无法加载代码为0的广告。 - Irfan Yaqub
显示剩余3条评论

40

在我的情况下,缺失支付信息是一个问题。当您登录 Admob 控制台时,您会看到一个通知,说除非我们添加支付详细信息,否则广告将不起作用。


1
请检查与AdMob账户相关联的电子邮件地址,Google对支付方式进行意外暂停或更改也可能会导致这些问题,就像我所遇到的一样。希望这有所帮助。 - Numanqmr
在我的情况下,我需要上传身份证明照片作为付款凭证。 - saurabhlahoti
AdMob不允许我设置付款方式,因为我还没有赚到任何钱。我该如何设置我的付款方式? - uzaysan
@UzaySan,你有解决方案吗? - Sumit Shukla

9

常量值:0

这个错误通常出现在新创建的广告中。请等待几个小时,直到广告加载完成。


7

我遇到了同样的错误,首先我尝试了这里列出的所有方法。

  1. Waiting for google to send me an email saying AdMob is active. Done, it took about an hour, in fact, if you log in it will give you the status, then I waited for 48~ hours, and still the same issue

  2. The payment setup was not an issue for me because I got paid from an associated AdSense account before.

  3. Then I read all the possible common setup issues that other users here had. I mostly used the sample Admob App ID

    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-3940256099942544~3347511713"/>
    

Admob入门页面上给出的示例广告单元ID,通过这种方式可以在开发过程中消除帐户问题。

  1. 我相当确定我的配置是正确的,但为了检查,我从GitHub下载了Google的广告示例。这样您可以检查工作代码,并将您的Admob应用程序ID放入其中,以查看帐户是否设置正确。
  2. 我开始玩他们的示例的build.gradle,将我得到的东西与他们的匹配,只更新和添加我的依赖项。然后我找到了它,只要我去targetSdkVersion 30compileSdkVersion 30,错误就会出现。因此,暂时我使用SDK 29,直到他们解决这个问题。我希望有些人会发现这很有用。

编辑:该问题已向Google报告,请在此处此处检查状态。它似乎影响Java和Kotlin。


1
哦,谢谢!!!我一直在寻找这个!!!你刚刚救了我! - liltof
谢谢!我之前也搜索了好几天才找到这个(sdk版本30是问题所在)。 - samir105
你的回答救了我!!!我花了几天时间试图找出问题所在!看起来版本30仍然没有修复。 - Syngmaster

6

当尝试从不同类型的广告位请求广告时,也会发生这种情况。例如,插屏广告请求横幅广告等。希望这能对某人有所帮助。


如果这是原因,那么它可以在测试广告中检测到,我认为不需要真正上线。 - Ashish Garg

4

在我的情况下,我之前已启用广告调试日志记录,但这反而导致它们无法正常工作...

进入您的设备设置 > Google > Ads > 启用广告调试日志记录 (禁用)

如果您选择顶部的重置广告ID,这也有助于解决问题。

完成以上步骤后,测试广告应该能够正常运行。祝您好运!


2
这是我Pixel上的问题。 - C13

3

文档中得知,错误代码0表示内部错误

public static final int ERROR_CODE_INTERNAL_ERROR

发生了一些内部错误;例如,广告服务器收到了无效的响应。

常量值:0

这个错误通常出现在新创建的广告中。请等待几个小时以便广告能够加载。


2

您可以在模拟器上运行项目,并且您的应用程序中将会获得关于“仿真广告”的信息。


2
我也遇到过"fail to load ad 0"的错误,但只要耐心等待一段时间,比如一个小时、两个小时甚至五个小时,你就能够看到广告了。请注意,不需要修改任何HTML标签。

1
当它与示例广告单元ID一起使用时,您的帐户可能尚未获批准。您刚刚创建了它吗?
测试广告立即为我工作。我不得不等待几个小时才能收到“好消息-您的帐户现在已获批准”的邮件,然后我的广告也开始工作了。无论如何,不要在开发中使用自己的广告-这可能会导致您的AdMob帐户被阻止!
因此,一旦测试广告运行并确认在发布构建中使用了正确的ID,您很可能已经做对了一切,只需要等待。
这里还有一个测试应用程序ID“ca-app-pub-3940256099942544〜3347511713”, 但我创建后立即使用自己的App ID没有任何问题。

3
无论如何都不要使用自己的广告进行开发。如果您想测试真实广告,可以将您的设备添加为测试设备。具体方法请参考:https://developers.google.com/admob/android/test-ads#enable_test_devices - Sadda Hussain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接