我一直在努力让AdMob在我的应用上工作一段时间。我一直在日志中获取onFailedToRecieveAd(无效广告请求)消息。我已将我的测试应用程序与此配对:
AdView adView;
LinearLayout ll;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adView = new AdView(this, AdSize.BANNER, "pub-2...............");//inserted my 16 digit pub id here
adView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.addView(adView);
setContentView(ll);
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice("3...............");// 16 digits, tried other strings as
// follows:
//for addTestDevice I've tried several numbers, including the 16 digit device
// number given me by my "device id" application, the "0123456789ABCDEF" device number
// given by my console and device windows, the "CECE.........................." 32 digit
// device number my logcat file told me to use in a logcat message,
// "AdRequest.TEST_EMULATOR"
// which an admob example in the docs said to use, "9774d56d682e549c" which another
// admob docs example said to use.
adView.loadAd(adRequest);
我也尝试过adView.loadAd(new AdRequest());在另一个google admob示例应用中使用没有设备ID。
没有任何东西可以显示任何内容,它甚至没有为广告创建空间,只是logcat中的onFailedToRecieveAd(无效广告请求)消息
我还在清单中包含了必要的权限和“com.google.ads.AdActivity”。
答案 0 :(得分:14)
您必须在Admob网站上转到您的帐户,为admob广告设置您的特定应用,并获得新的更长的发布商编号。我的发布商编号只以'pub -......'开头,我的新号码更长,以'ca-app-pub -.......'开头。当我在一个示例横幅ap中看到“ca-app-pub”序言时,我从一开始就很好奇。
Google Admob“Google移动广告SDK”开发网站上的“横幅广告1”说明(https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals?hl=en_US#android)中没有提到必须返回您的admob帐户来设置广告的特定应用并获得一个新的发布商编号。
愚蠢的错误是最难修复的。
答案 1 :(得分:3)
小心id,有2个代码:编辑号(如:pub-xxxxxxxxxxxxxxxx),另一个是横幅ID(如下:ca-app-pub-xxxxxxxxxxxxxxxx / xxxxxxxxxx)(这一个你需要使用)
你需要使用最后一个,如果你使用第一个不工作:)
答案 2 :(得分:1)
收到广告失败并不罕见。这是一条普通邮件,主要是说目前没有广告可以为您的应用投放。
这意味着您的Admob集成正在运行,您将从服务器获得响应。随着您的应用发送更多请求,它将更有可能获得广告展示次数。
答案 3 :(得分:0)
您是否尝试过在未设置测试设备ID的情况下请求广告?
adView.loadAd(new AdRequest());
尝试添加以下代码行以获取有关失败的更多信息:
// Set AdListener
adView.setAdListener(new AdListener() {
@Override
public void onFailedToReceiveAd(Ad ad, ErrorCode error) {
System.err.println("Ad failed: " + ad.toString() + error.toString());
}
@Override
public void onReceiveAd(Ad ad) {
System.out.println("Ad received: " + ad.toString());
}
});