"No Ad Config." onAdFailedToLoad() 方法尝试加载广告时

"No Ad Config." on onAdFailedToLoad() Method While trying to Load Ads

我正在尝试为我的应用程序加载插页式广告。每当我尝试加载这些广告时,我都会收到来自域“com.google.android.gms.ads”的“无广告配置”错误消息。

代码如下:

我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ayush.torch">


    <application

        android:allowBackup="true"
        android:icon="@drawable/ic_ico"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".main">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="i_have_put_my_app_id_here"/>
     
    </application>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />

</manifest>

onCreate() 在 main.java

        
        // Creating the InterstitialAd and setting the adUnitId.
        interstitialAd = new InterstitialAd(this);
        interstitialAd.setAdUnitId("i have also put my interstitial ad id here");


       interstitialAd.setAdListener(new AdListener() {
           @Override
           public void onAdLoaded() {
               Toast.makeText(main.this, "Ad Loaded", Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onAdFailedToLoad(LoadAdError loadAdError) {
               String error = String.format("domain: %s, code: %d, message: %s", loadAdError.getDomain(), loadAdError.getCode(), loadAdError.getMessage());
               Toast.makeText(main.this, "onAdFailedToLoad() with error: " + error, Toast.LENGTH_SHORT).show();
           }
       });

当我在 on 函数中加载我的广告时,出现错误“无广告配置”。

                    Log.d("[Ads]","Ad Load State For on(): " + interstitialAd.isLoaded());
                    if (interstitialAd.isLoaded()) 
                    {
                        interstitialAd.show();
                    }

已修复,它可以正常工作。

从 google 找到资源。它消除了我所有的疑虑。 For Test Ad Resource Click Me

广告有两种方式。

  1. 应用程序正在开发中。
  2. 应用程序正在制作中。

场景 1:应用程序正在开发中

对于这种情况,我们需要使用测试广告。由于错误印象,Admob 和“com.google.android.gms.ads”不允许用户在开发阶段使用广告。

启用测试广告。有两种方式: 您可以使用 google 广告单元 ID,它们在 link 广告上可用。 要么 您可以使用自己的广告单元 ID,但需要将您的设备注册为测试设备并使用您自己的请求配置。 这是一个简单的例子: 在“Logcat”

中搜索您的“设备 ID”

看起来像

I/ADS: 使用请求的配置......Arrays.asList("Your device Id will be here");

然后复制粘贴这个(我能读懂你的想法..)

// Change your Id
RequestConfiguration configuration = new RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("your device id should go here")).build();
MobileAds.setRequestConfiguration(configuration);

现在只需加载广告,它就会弹出。恭喜。 :)


场景 2:当应用程序正在生产时

这是非常简单的部分...

  1. 只需从代码中删除 .setTestDeviceIds(Arrays.asList("your device id should go here")) 部分...
  2. Link 您的 AdMob 应用到 PlayStore。 [你的应用发布了吗?是的……是的……还有……]
  3. 只选择广告。
  4. 并检查是否在 Play 控制台的应用设置中启用了广告。
  5. 现在应该可以了。恭喜

此警告仅表示您的 AdMob 帐户尚未收到银行确认或银行帐户添加确认。

我正在使用颤振。 我刚刚将我的设备添加到 Admob 测试设备中并且它工作正常。 在生产中我只会删除测试设备。

如果我错了请告诉我。

这是另一种不需要编程的方法。

Go to Admob dashboard > Settings > Test device > Add test device

要找到它,请转至您的设备设置 > Google > 广告 > 在那里您可以找到您的广告 ID!

我的错误:同时设置测试设备和加载测试广告

解决方法:只用一个。通过使用带有生产广告单元 ID 的测试设备,错误消失了。广告再次加载,它们是测试广告,即使您指定生产广告单元 ID

对于 FLUTTER 应用,使用 google_mobile_ads there is a slight difference in setting test device. According to documentation you have to updateRequestConfiguration。示例代码如下:

MobileAds.instance.updateRequestConfiguration(RequestConfiguration(testDeviceIds: ["yourdeviceId"]));

您可以通过在 运行 输出日志中搜索 RequestConfiguration 来获取测试设备。

如果您的应用已上传到某个商店,而您没有正确设置 app-ads.txt,也可能会发生这种情况。

请记住,如果您使用的是 AdMob 测试广告,则还应将此条目添加到您的 app-ads.txt 中:

google.com, pub-3940256099942544, DIRECT, f08c47fec0942fa0

来源:https://developers.google.com/admob/android/test-ads

在我的例子中,我在从 iOS 切换到 Android 后忘记更改 ironsource 的应用程序 ID,因此它一直调用配置为调用的 iOS 版本的 ironsource错误的 Admob 广告单元 ID。修复 ironsource ID 后,调用了正确的 Admob 单元 ID 并修复了错误。

对我来说,这发生在开发阶段,我使用的是 .aab 而不是 .apk,Google 将 re-sign 使用他们的密钥库,因此使用我自己的密钥库将 return “错误代码 3,无广告配置”。