插页式广告和横幅广告加载失败
Interstitial and banner ads fail to load
我一直在研究这段代码,显然插页式广告和横幅广告一直无法加载。
下面是创建横幅广告视图和添加新生成的广告单元的代码。还有广告侦听器支持的插页式广告代码,以查看广告是否有效..
//Ads ----------------
// Create the adView
RelativeLayout layout = new RelativeLayout(this);
layout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//<!-- Ads Using Google Play Services SDK -->
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID);
// Add the adView to it
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
adView.setLayoutParams(params);
layout.addView(mGLSurfaceView);
layout.addView(adView);
setContentView(layout);
//New AdRequest
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
//-----------------------------------------------------Interstitial Add
// Create an Interstitial ad.
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AD_INTERSTITIAL_UNIT_ID);
interstitialAd.loadAd(new AdRequest.Builder().build());
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
interstitialAd.show();
}
@Override
public void onAdFailedToLoad(int errorCode) {
Toast.makeText(getApplicationContext(), "Interstitial Ads loading failed", Toast.LENGTH_SHORT).show();
}
});
// Load the interstitial ad.
showInterstitialAds();
public void showInterstitialAds()
{
runOnUiThread(new Runnable() {
public void run() {
AdRequest interstitialAdRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(interstitialAdRequest);
}
});
}
在应用程序中,我得到的只是声明插页式广告无效的 Toast 消息。甚至横幅广告也不起作用。
在 logcat 上,我收到不同的消息:
我最后得到:
01-17 16:54:05.765: I/Ads(1136): No fill from ad server.
01-17 16:54:05.769: I/Ads(1136): Scheduling ad refresh 60000 milliseconds from now.
01-17 16:54:05.769: W/Ads(1136): Failed to load ad: 3
还有这个:
01-17 16:52:02.945: I/Ads(1136): Starting ad request.
01-17 16:52:02.945: I/Ads(1136): Use AdRequest.Builder.addTestDevice("A55B0AA295150C0583B3FADA0B02054B") to get test ads on this device.
我在 showInterstitialAds 中尝试了上述方法,但我一直收到同样的错误,广告没有显示。
另外,最有趣的是:
There was a problem getting an ad response. ErrorCode: 2
错误代码上的数字不同:0、2、3。我不确定这意味着什么,因为我是整个 android 世界的新手(我几个月前才开始编码。)
横幅广告未加载,因为没有可用的广告。这就是 "No fill from ad server means"。它偶尔会发生,尤其是当您的流量较低时。
要进行测试,您应该配置 AdView 以显示测试广告。
参见 https://developer.android.com/reference/com/google/android/gms/ads/AdRequest.Builder.html#addTestDevice(java.lang.String)
很难说您的插页式广告出了什么问题。
您使用的 AdUnitId 是否正确?
也永远不要从 onAdLoaded()
调用 interstitial#show()
。它提供了非常糟糕的用户体验,并且可能会导致您的帐户被禁止。
相反,您应该从应用中的自然断点调用 interstial#show()
,例如在游戏关卡结束时。
我一直在研究这段代码,显然插页式广告和横幅广告一直无法加载。
下面是创建横幅广告视图和添加新生成的广告单元的代码。还有广告侦听器支持的插页式广告代码,以查看广告是否有效..
//Ads ----------------
// Create the adView
RelativeLayout layout = new RelativeLayout(this);
layout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
//<!-- Ads Using Google Play Services SDK -->
adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID);
// Add the adView to it
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
adView.setLayoutParams(params);
layout.addView(mGLSurfaceView);
layout.addView(adView);
setContentView(layout);
//New AdRequest
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
//-----------------------------------------------------Interstitial Add
// Create an Interstitial ad.
interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId(AD_INTERSTITIAL_UNIT_ID);
interstitialAd.loadAd(new AdRequest.Builder().build());
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
interstitialAd.show();
}
@Override
public void onAdFailedToLoad(int errorCode) {
Toast.makeText(getApplicationContext(), "Interstitial Ads loading failed", Toast.LENGTH_SHORT).show();
}
});
// Load the interstitial ad.
showInterstitialAds();
public void showInterstitialAds()
{
runOnUiThread(new Runnable() {
public void run() {
AdRequest interstitialAdRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(interstitialAdRequest);
}
});
}
在应用程序中,我得到的只是声明插页式广告无效的 Toast 消息。甚至横幅广告也不起作用。 在 logcat 上,我收到不同的消息: 我最后得到:
01-17 16:54:05.765: I/Ads(1136): No fill from ad server.
01-17 16:54:05.769: I/Ads(1136): Scheduling ad refresh 60000 milliseconds from now.
01-17 16:54:05.769: W/Ads(1136): Failed to load ad: 3
还有这个:
01-17 16:52:02.945: I/Ads(1136): Starting ad request.
01-17 16:52:02.945: I/Ads(1136): Use AdRequest.Builder.addTestDevice("A55B0AA295150C0583B3FADA0B02054B") to get test ads on this device.
我在 showInterstitialAds 中尝试了上述方法,但我一直收到同样的错误,广告没有显示。
另外,最有趣的是:
There was a problem getting an ad response. ErrorCode: 2
错误代码上的数字不同:0、2、3。我不确定这意味着什么,因为我是整个 android 世界的新手(我几个月前才开始编码。)
横幅广告未加载,因为没有可用的广告。这就是 "No fill from ad server means"。它偶尔会发生,尤其是当您的流量较低时。
要进行测试,您应该配置 AdView 以显示测试广告。 参见 https://developer.android.com/reference/com/google/android/gms/ads/AdRequest.Builder.html#addTestDevice(java.lang.String)
很难说您的插页式广告出了什么问题。 您使用的 AdUnitId 是否正确?
也永远不要从 onAdLoaded()
调用 interstitial#show()
。它提供了非常糟糕的用户体验,并且可能会导致您的帐户被禁止。
相反,您应该从应用中的自然断点调用 interstial#show()
,例如在游戏关卡结束时。