Admob 显示测试广告但不显示真实广告

Admob shows Test ads but not real ads

我正在使用 admob 展示 android 广告。测试广告运行良好,但未显示真实广告。此外,我对真正的插页式广告没有任何问题,因为它们运行良好。只是真正的横幅广告没有出现。我的 java 密码是

private InterstitialAd interstitial;    
interstitial = new InterstitialAd(MainActivity.this);

        interstitial.setAdUnitId("ca-app-pub-********");

        AdView adView = (AdView) this.findViewById(R.id.adView);               
        AdRequest adRequest = new AdRequest.Builder()

        // Add a test device to show Test Ads
         .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
         .addTestDevice("4CCC00EF4EA205A6FE82E1AEB26B0839")
                .build();

        // Load ads into Banner Ads
        adView.loadAd(adRequest);

        // Load ads into Interstitial Ads
        //interstitial.loadAd(adRequest);

布局文件是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-********" />

</LinearLayout>

删除

这行
.addTestDevice("4CCC00EF4EA205A6FE82E1AEB26B0839")

此外,当您使用虚拟设备时,它无论如何都会显示测试广告。您是在真实设备上测试它吗?

看看你的logcat。它会说明为什么没有显示真正的广告。

这可能是因为现在有 none 个可以显示在您所在位置的设备上。

如果您选择 Native Express 模板,请使用此 link。 NativeExpressAdView 不适用于 AdView。 https://firebase.google.com/docs/admob/android/native-express

NativeExpressAdView adView = (NativeExpressAdView)findViewById(R.id.adView);

<com.google.android.gms.ads.NativeExpressAdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ads:adUnitId="ca-app-123123123123/123123123"
    ads:adSize="320x150">
</com.google.android.gms.ads.NativeExpressAdView>

"It could be that you have only recently created a new Ad Unit ID and requesting for live ads. It could take a few hours for ads to start getting served if that is that case."

我遇到了同样的问题,如果你能展示测试广告,没关系,实时广告很快就会展示(当然在你删除 .addTestDevice(...) ).

我猜想 google 需要时间来收集一些信息(位置、年龄、性别...)以正确显示用户感兴趣的广告。

也许你知道但永远不会忘记:不要触摸实时广告,你很快就会被禁止。

https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/android/fBe3YL3ffpo

如果您删除了:

.addTestDevice()

然后,确保您使用的 ID 与 AdMob 在 string.xml 文件中为您提供的 ID 相同

AdMob ID page

您可能正在使用样本单元 ID:ca-app-pub-3940256099942544/6300978111

如果您使用上面的方法,您将看到测试广告。

确保在发布应用程序之前更改为您自己的单元 ID。

我也遇到了这个问题。 AdView 和 IntersitialAd 只在 模拟器 上向我展示了测试广告。但是真实设备上有真实的广告。 我认为 firebase 可以检测您使用的是模拟器还是真实设备。我用过 Firebase:

com.google.firebase:firebase-ads:11.0.4

创建实时广告单元 ID

登录

https://apps.admob.com

  1. 在左侧菜单中点击 ->Apps
  2. 添加应用程序
  3. 选择您是在 Google Play 还是 App Store
  4. 上发布您的应用
  5. 如果否 -> 输入您的应用信息
  6. 创建广告单元
  7. 用新的广告单元替换测试广告单元。
  8. 一旦应用发布到 Playstore,您就可以看到广告!

在您的 xml 中添加 AdView

  <com.google.android.gms.ads.AdView 
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    ads:adSize="BANNER"
    ads:adUnitId="@string/banner_ad_unit_id">
  </com.google.android.gms.ads.AdView>

内部字符串 <string name="banner_ad_unit_id">your_new_ad_unit</string>

在您的 java 代码中

 AdView mAdView = (AdView) v.findViewById(R.id.adView);
 AdRequest adRequest = new AdRequest.Builder().build();
 mAdView.loadAd(adRequest);

当应用程序新注册到 AdMob 时,需要一些时间和一些广告请求才能建立广告资源。因此,您可能无法立即看到实时印象。一旦您的应用开始发出更多请求,您应该会看到更一致的结果。请注意,测试广告通过与实际广告相同的渠道运作。能够 return 测试广告可确保您的应用程序与我们的网络正常通信。请耐心等待,几天后它会起作用。

其实我也遇到过这个问题。您必须登录到 admob 并转到您在其中添加的应用程序。该应用程序有一个 admob id。使用app的id做these steps。 然后在该应用程序中(在 admob 中)创建一个新的横幅或任何类型的广告,并使用该横幅的 ID 来完成 these steps。当您创建横幅时,它会为您提供说明。

回答一个老问题,但我遇到了同样的问题,即测试广告可见,而生产密钥的广告不起作用。

后来我发现我没有向 Admob 提供我的付款详细信息。

A​​dmob 中的付款详细信息是必须的。请在几个小时后更新并检查它开始出现。

就我而言,这是因为应用程序中的密钥库文件路径错误 > build.gradle。确保你有正确的 storeFile 文件('file path')

我相信它会帮助别人找到答案。

以下是显示实时广告所需时间的官方答案。

How long does it take for ads to begin appearing after the first ad request?

When apps are newly registered with AdMob, it typically takes up to an hour and a few ad requests to allow inventory to build. Because of this, you may not see live impressions immediately.

Note: In some cases, it may take longer than an hour. Please wait 24 hours before seeking additional help.

Once your app is making more requests, you should see more consistent results. Please note that test ads operate through the same channels as live ads. Being able to return a test ad ensures that your application is communicating properly with our network.

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

您必须先添加您的付款信息。我忘记在 Google Admob 中执行此操作,因此它没有显示任何广告。

此外,请确保您使用真实的广告 ID 而不是测试 ID。

它可能没有显示广告,因为您的应用程序仍处于开发模式,您可以按照说明here在您的广告移动帐户中注册一个测试设备。即使在开发模式下,您也应该能够在测试设备上看到广告。

复制步骤到这里

  • https://apps.admob.com 上登录您的 AdMob 帐户。
  • 点击边栏中的设置。
  • 单击“测试设备”选项卡。
  • 点击添加测试设备。
  • Select您设备的平台。
  • 输入设备名称。考虑使用有助于您在 AdMob 帐户中快速识别设备的名称。 注意:有权访问您的 AdMob 帐户的任何人都可以看到设备名称。
  • 输入您的广告ID/IDFA。 Learn how to find your advertising ID/IDFA.
  • Select 用于激活广告检查器的手势: None,摇动或轻弹两次
  • 点击完成。

一般来说,它的发生有两个原因:

  1. 您将设备定义为测试设备。
  2. 如果您使用模拟器 android studio,您总是会看到测试广告。

According to Google documentation, android emulators & ios simulators are automatically configured as test devices.

有关详细信息,请查看 Google Web Site

我遇到了同样的问题,我认为我永远无法解决它。

错误原因: Admob 正在展示测试广告,因为从 admob 加载的广告不适合容器,主要是线性布局,因为加载的广告宽度更大。

修复: 我的解决方法是创建自定义尺寸为 320x50 的横幅广告,然后加载它。

我无法 post 我的答案中的代码,但您可以从 Jay Patel 对以下 Whosebug 问题的回答中找出您自己的代码。

How to set adSize?