我一直在研究这段代码,显然插页式广告和 Banner 广告无法加载 .
以下是用于创建 Banner 广告和添加新生成的广告单元的代码 . 也是adlistener支持的插页式广告代码,以查看广告是否有效 .
//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消息,声明插页式广告不起作用 . 即使 Banner 广告也不起作用 . 在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
在errocode上有不同的数字:0,2,3 . 我不确定它是什么意思,因为我是整个Android世界的新手(几个月前我刚刚开始编码 . )
1 回答
由于没有可用的广告,因此未加载 Banner 广告 . 这就是“广告服务器无法填充”的含义 . 偶尔会发生这种情况,尤其是当您的流量较低时 .
要测试您应该配置AdView以显示测试广告 . 见https://developer.android.com/reference/com/google/android/gms/ads/AdRequest.Builder.html#addTestDevice(java.lang.String)
很难说你的插页式广告出了什么问题 . 您使用的是正确的AdUnitId吗?
也永远不要从
onAdLoaded()
调用interstitial#show()
. 它提供了非常糟糕的用户体验,可能会禁止您的帐户 .相反,您应该从应用中的自然断点调用
interstial#show()
,就像在游戏关卡结束时一样 .