"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:应用程序正在开发中
对于这种情况,我们需要使用测试广告。由于错误印象,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:当应用程序正在生产时
这是非常简单的部分...
- 只需从代码中删除 .setTestDeviceIds(Arrays.asList("your device id should go here")) 部分...
- Link 您的 AdMob 应用到 PlayStore。 [你的应用发布了吗?是的……是的……还有……]
- 只选择广告。
- 并检查是否在 Play 控制台的应用设置中启用了广告。
- 现在应该可以了。恭喜
此警告仅表示您的 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
在我的例子中,我在从 iOS 切换到 Android 后忘记更改 ironsource 的应用程序 ID,因此它一直调用配置为调用的 iOS 版本的 ironsource错误的 Admob 广告单元 ID。修复 ironsource ID 后,调用了正确的 Admob 单元 ID 并修复了错误。
对我来说,这发生在开发阶段,我使用的是 .aab 而不是 .apk,Google 将 re-sign 使用他们的密钥库,因此使用我自己的密钥库将 return “错误代码 3,无广告配置”。
我正在尝试为我的应用程序加载插页式广告。每当我尝试加载这些广告时,我都会收到来自域“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:应用程序正在开发中
对于这种情况,我们需要使用测试广告。由于错误印象,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:当应用程序正在生产时
这是非常简单的部分...
- 只需从代码中删除 .setTestDeviceIds(Arrays.asList("your device id should go here")) 部分...
- Link 您的 AdMob 应用到 PlayStore。 [你的应用发布了吗?是的……是的……还有……]
- 只选择广告。
- 并检查是否在 Play 控制台的应用设置中启用了广告。
- 现在应该可以了。恭喜
此警告仅表示您的 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
在我的例子中,我在从 iOS 切换到 Android 后忘记更改 ironsource 的应用程序 ID,因此它一直调用配置为调用的 iOS 版本的 ironsource错误的 Admob 广告单元 ID。修复 ironsource ID 后,调用了正确的 Admob 单元 ID 并修复了错误。
对我来说,这发生在开发阶段,我使用的是 .aab 而不是 .apk,Google 将 re-sign 使用他们的密钥库,因此使用我自己的密钥库将 return “错误代码 3,无广告配置”。