为什么 Admob 测试广告不显示

Why Admob test ads don't show

我已经遇到这个问题 3 天了。我开始开发带有测试广告的应用程序,以更新商店中发布的应用程序。但绝不是测试广告出现在 2 个应用程序中。我怀疑是因为我使用的是旧库。但是当我创建一个新项目并对其进行测试时,我看到了测试广告。我在商店发布的应用程序中看不到任何测试广告。如果有任何帮助,我将不胜感激。

错误代码:

failed to load: 3 --> ERROR_CODE_NO_FILL

build.gradle:

implementation 'com.google.android.gms:play-services-ads:19.4.0'


//and...
dependencies {
        classpath 'com.android.tools.build:gradle:3.5.3'
        classpath 'com.google.gms:google-services:4.3.0'
    }

Activity:

private InterstitialAd mInterstitialAd;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);

    MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");

    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
    mInterstitialAd.loadAd(new AdRequest.Builder().build());

    mInterstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
            super.onAdClosed();
            Log.d("testad","onAdClosed");
        }

        @Override
        public void onAdFailedToLoad(int i) {
            super.onAdFailedToLoad(i);
            Log.d("testad","onAdFailedToLoad"+i);

            mInterstitialAd.loadAd(new AdRequest.Builder().build());
        }

        @Override
        public void onAdLeftApplication() {
            super.onAdLeftApplication();
            Log.d("testad","onAdLeftApplication");
        }

        @Override
        public void onAdOpened() {
            super.onAdOpened();
            Log.d("testad","onAdOpened");
        }

        @Override
        public void onAdLoaded() {
            super.onAdLoaded();
            Log.d("testad","onAdLoaded");
        }
    });

Android 清单:

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

</application>

我试过了:

我从设备设置中重置了广告 ID。

我将设备添加为测试设备。

我尝试了不同的网络连接。

我尝试使用不同的设备。

如果您的测试广告有效,但您的真实广告未加载。这并不意味着您的实施是错误的。在您的应用获得一定流量之前,Admob 不会显示真实。如果您的应用流量较低,AdMob 将展示很少的广告或不展示广告。

failed to load: 3 --> ERROR_CODE_NO_FILL

此错误清楚地表明 AdMob 现在没有填充您的广告。如果测试广告运行良好,那么一旦 AdMob 开始投放您的真实广告,您的真实广告也可以正常加载。

不要尝试从您的设备加载真实广告,如果 Admob 检测到您正在尝试自行加载广告,他们会放置 limited ad serving


您使用的是旧版 AdMob SDK,当前版本是 20.4.0。版本 19.7.0 中引入了许多 API 更改,一些 类 已弃用并重命名。

您用于初始化的插页式 constructor 现已弃用。您必须使用 static load() 方法创建 interstitial 广告实例。

现在您必须像这样初始化和使用插页式广告

private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      .
      .
      .
      AdRequest adRequest = new AdRequest.Builder().build();

      InterstitialAd.load(this,"ca-app-pub-3940256099942544/1033173712", adRequest,
        new InterstitialAdLoadCallback() {
      @Override
      public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
        // The mInterstitialAd reference will be null until
        // an ad is loaded.
        mInterstitialAd = interstitialAd;
        Log.i(TAG, "onAdLoaded");
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
        // Handle the error
        Log.i(TAG, loadAdError.getMessage());
        mInterstitialAd = null;
      }
    });
  }

现在通过调用show()方法显示它

if (mInterstitialAd != null) {
  mInterstitialAd.show(MyActivity.this);
} else {
  Log.d("TAG", "The interstitial ad wasn't ready yet.");
}

我在 React Native 中遇到了同样的问题。首先,我的测试广告开始展示,然后我将应用上传到 google Play 商店和应用商店。几天后,广告限制在 15 天后被标记在我的帐户上,但现在广告没有显示,甚至没有测试广告。我更改了捆绑包名称,然后测试广告展示。说明集成没问题,一定是账户端有问题。