Android AdRequest returns 仅 onAdFailedToLoad AdRequest.ERROR_CODE_NO_FILL

Android AdRequest returns only onAdFailedToLoad AdRequest.ERROR_CODE_NO_FILL

我的应用程序已经在 Google Play 商店上架了一个月,一切正常。两天前,我将其添加到 "Designed for families" 类别。我收到了 Google 团队的认可和祝贺。从那时起,我的插页式广告就停止展示了。我收到 AdRequest.ERROR_CODE_NO_FILL

InterstitialAd interstitialAd;   
Bundle extras = new Bundle();
extras.putBoolean("is_designed_for_families", true); 

AdRequest adRequest = new AdRequest.Builder()
        .addNetworkExtrasBundle(AdMobAdapter.class, extras)
        .build();
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(InterstitialSample.AD_UNIT_ID);
interstitialAd.loadAd(adRequest);
interstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            Log.d("Tim", "OK");
        }

        @Override
        public void onAdFailedToLoad(int errorCode) {
            String message = String.format("onAdFailedToLoad (%s)", InterstitialSample.getErrorReason(errorCode));
            Log.d("Tim", message);
        }
    });

我没有更改包名。另外,我尝试更改 AD_UNIT_ID 但没有成功。

您的代码似乎没有任何问题。我认为您收到了真实的 "no fill" 回复。

被视为适合儿童和家庭的广告是更广泛的广告池的一个子集。如果您今天展示广告,在选择加入 Designed for Families 计划后,您可能会注意到已填充的展示次数减少和收入减少。我们正在努力增加有资格投放到 DFF 应用程序的广告池。

我对常规横幅广告有类似的问题: 4 月 17 日,我将应用程序添加到新的 "Designed for Families" 程序中,设置如下: 家庭类别:教育,年龄组:5 岁及以下,6-8 岁,展示广告:是 我检查了要求和广告政策 - 我的应用符合要求。 该应用已成功获得 Google 开发团队的批准。

在 Admob 中打开案例后,他们要求我在源代码中添加代码,将 "is_designed_for_families" 设置为 true 并调用 tagForChildDirectedTreatment() 方法来处理面向儿童受众的广告请求。在看到 "is_designed_for_families" 和 tagForChildDirectedTreatment() 都设置为 true 后,AdMob 将为该广告请求 return Designed for Families-compliant ads。 我做到了,但没有任何变化 - 仍然收到 "No fill from ad server."

自 4 月以来,将近两个月我的应用收到了零广告。 儿童友好广告池似乎是空的。 我还在等待问题得到解决。

我认为问题在于 Admob 根本没有在广告活动中包含 "Designed for Families" 类别!!! 我亲自查了一下,在设置广告活动时没有看到这个选项!

这不是错误。只有少数广告具有 "for children 5 years" 或 "for children 8 years" 的特征。将您的应用从 "Design for families" 类别中删除以展示广告,或者等到出现具有类似特征的广告。

我想错过这个

/**
 * Called when leaving the activity
 */
@Override
public void onPause() {
    if (adView != null) {
        adView.pause();
    }
    super.onPause();
}

/**
 * Called when returning to the activity
 */
@Override
public void onResume() {
    super.onResume();
    if (adView != null) {
        adView.resume();
    }
}

/**
 * Called before the activity is destroyed
 */
@Override
public void onDestroy() {
    if (adView != null) {
        adView.destroy();
    }
    super.onDestroy();
}