Admob不显示测试广告或真实广告。

5

我已经苦苦挣扎了近一个星期的Admob广告问题,到处搜索互联网以找到可能的解决方案,但什么都没用。我的Android应用无法显示测试广告或实时广告。这是日志:

I/Ads: Updating ad debug logging enablement.
I/Ads: Starting ad request.
    SDK version: afma-sdk-a-v13280019.11910000.1
I/Ads: This request is sent from a test device.
W/Ads: Not retrying to fetch app settings
W/Ads: Update ad debug logging enablement as false
W/Ads: App does not have the required permissions to get location
    I/Ads: Trying mediation network: 
    I/Ads: Instantiating mediation adapter: com.google.DummyAdapter
    I/Ads: No fill from any mediation ad networks.
    I/Ads: Scheduling ad refresh 60000 milliseconds from now.
    W/Ads: Failed to load ad: 3

我的测试插页式广告可以正常加载,但实际的广告却无法加载。横幅广告也无法显示,无论是测试广告还是实际广告。

以下是我的XML AdView:

<com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            ads:adSize="BANNER"
            ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> //test admob unit id
</com.google.android.gms.ads.AdView>

我会用以下代码加载横幅:

     MobileAds.initialize(this, getString(R.string.app_id));
 adView1 = findViewById(R.id.adView);
AdRequest adRequest1 = new AdRequest.Builder().addTestDevice("my_test_device_id").build();
adView1.loadAd(adRequest1);

这个实时插页广告是通过以下方式加载的,并且它可以正常工作(测试版本不能):

final InterstitialAd mInterstitialAd = new InterstitialAd(this);
          mInterstitialAd.setAdUnitId("_live_ad_id");
          mInterstitialAd.loadAd(new AdRequest.Builder().addTestDevice("my_test_device_id").build());
          mInterstitialAd.setAdListener(new AdListener(){
              @Override
              public void onAdLoaded(){
                  mInterstitialAd.show();

              }
          });
          if (mInterstitialAd.isLoaded()) {
          } else {
              Log.d("TAG", "The interstitial wasn't loaded yet.");
          }

我尝试过的事情

  • 使用implementation 'com.google.android.gms:play-services-ads:15.0.1'编译gradle

  • 根据firebase网站的指南编译gradle并将firebase连接到我的admob账户

  • 将AdView放置在Relative和Linear Layout中

  • 更改广告大小

  • 更改活动和布局

没有任何作用。从日志中我了解到广告请求是成功的,但是AdMob目前没有广告可供显示。也许实时广告未显示,因为我的应用程序还没有上线,但是为什么测试广告不显示呢?而且为什么只有实时插页广告起作用?我还以为我的AdMob帐户可能已被禁用,但广告在其他应用程序中有效。


1
我的一个广告空间也出现了这种情况。没有实时广告,也没有测试广告,没有填充。我认为这是因为我们从某个设备/IP/某些组合请求了太多次广告。广告对用户来说填充得很好。 - Steve M
谢谢,这似乎是问题所在。我已经尝试了另外两个设备,横幅广告可以正确加载。然而,这非常令人沮丧,因为广告在我用于测试的设备上不显示,而且我并不总是有其他物理设备来尝试应用程序。 - rickyxd
2个回答

3

将您的ads:adUnitId="ca-app-pub-3940256099942544/6300978111"更改为ads:adUnitId="your_banner_id"

注意: ca-app-pub-3940256099942544/6300978111是用于测试的!

尝试此代码以获取横幅广告

 MobileAds.initialize(this, getString(R.string.app_id));
 adView1 = findViewById(R.id.adView);
AdRequest adRequest1 = new AdRequest.Builder().addTestDevice("my_test_device_id").build();
adView1.loadAd(adRequest1);

关于插页广告

MobileAds.initialize(LoginActivity.this, getResources().getString(R.string.app_id));

        mInterstitialAd = new InterstitialAd(this);

         mInterstitialAd.setAdUnitId(getResources().getString(R.string.full_screen_ads_id));
            mInterstitialAd.loadAd(new AdRequest.Builder()
                    .build());
            mInterstitialAd.setAdListener(new com.google.android.gms.ads.AdListener() {
                @Override
                public void onAdLoaded() {
                    mInterstitialAd.show();
                    super.onAdLoaded();

                }
            });

嗨,谢谢你,但问题仍然存在。插页式广告可以正常工作,但无法使横幅广告正常工作。不过为什么测试广告无法显示呢? - rickyxd
我遇到了同样的问题。如果你成功解决了,请发帖告知。 - grebulon
@rickyxd 你替换这个广告 ID 为你自己的广告 ID 了吗?ads:adUnitId="ca-app-pub-3940256099942544/6300978111" - iamkdblue
@kdblue 是的,现在我正在使用在admob网站上创建的我的实时广告单元ID。但是在我的手机(OnePlus 5)上没有显示横幅(测试和实时)以及测试插页式广告的方法,但我设法在另一台设备上尝试了该应用程序,并且测试和实时广告都能正常运行。目前我无法理解为什么会出现这种情况,这让我非常沮丧,因为我并不总是有其他物理设备,而只有我的OnePlus 5。 - rickyxd
@rickyxd 好的,你可以尝试一下不带 addTestDevice("my_test_device_id") 的代码吗?把它注释掉然后再试试! - iamkdblue
显示剩余2条评论

1

这可能比较老,但或许对某些人有所帮助。

你可能由于多种原因而收到此错误。

另外两个原因是:

  1. 如果你正在使用测试广告并且所有设置都正确,但谷歌可能会出于某些原因阻止你的应用程序 ID(例如 com.example.myapp),如果你之前曾经在生产环境中使用过该 ID(计费、地址等),即使在测试 ID 上也不起作用;尝试更改你的应用程序 ID 并检查是否有效。
  2. 如果你正在使用生产 ID,则你的账户可能尚未激活;你只需等待直到其激活即可。

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