【问题标题】:Why Admob test ads don't show为什么 Admob 测试广告不显示
【发布时间】:2021-10-08 12:36:59
【问题描述】:

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

错误代码:

加载失败: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'
    }

活动:

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。

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

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

我尝试了不同的设备。

【问题讨论】:

    标签: android android-studio admob


    【解决方案1】:

    我在 React Native 中遇到了同样的问题。首先,我的测试广告开始展示,然后我将应用程序上传到 google play 商店和应用程序商店。几天后,在我的帐户上标记了广告限制,15 天后该限制被删除,但现在广告甚至没有显示测试广告。我更改了捆绑包名称,然后测试广告展示。这意味着集成没问题,帐户方面肯定有问题。

    【讨论】:

    • 谢谢哥们,现在可以了。我已经更改了包名称并且可以使用。正如您所说,我认为我的广告在我的帐户中受到限制,因此不可见。但这是我客户的工作,他的广告帐户很好,但 Google 知道这是我的,我猜是因为我测试过的设备。
    • @İsaC。实际上,我的应用已经在应用商店和 google play store 我无法更改包名。
    【解决方案2】:

    如果您的测试广告正常工作,但您的真实广告没有加载。这并不意味着您的实施是错误的。在您的应用获得一定流量之前,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.");
    }
    

    【讨论】:

    • 感谢您的回复,但测试广告不起作用
    • 你试过用最新的ads sdk吗??
    • 我没有在旧项目上尝试过。它给出了 skd 错误,我需要很长时间才能修复它们。但我通过更改包名解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多