Объявление Admob никогда не отображается в представлении

Я пытаюсь показать объявления AdMob в своем приложении для Android и не смог этого сделать. Я связался с их поддержкой и не получил никакого ответа почти через неделю, поэтому решил, что сейчас попрошу о помощи.

Сначала некоторый код:
AndroidManifest.xml

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" package="com.foo.application"> <application> <meta-data android:value="admob-publisher-id-here" android:name="ADMOB_PUBLISHER_ID" /> </application> <uses-permission android:name="android.permission.INTERNET" /> </manifest> 

Да, admob-publisher-id – вот мой настоящий идентификатор издателя в фактическом файле манифеста.

main_layout.xml

 <LinearLayout android:id="@+id/adhost" android:layout_width="fill_parent" android:padding="5dip" android:layout_height="wrap_content" android:minHeight="20dip" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.foo.application"> <com.admob.android.ads.AdView android:id="@+id/ad" android:layout_width="fill_parent" android:layout_height="wrap_content" app:backgroundColor="#000000" app:primaryTextColor="#FFFFFF" app:secondaryTextColor="#CCCCCC" app:keywords="android at&amp;t t-mobile iphone blah"/> </LinearLayout> 

attr.xml

 <resources> <declare-styleable name="com.admob.android.ads.AdView"> <attr name="backgroundColor" format="color" /> <attr name="primaryTextColor" format="color" /> <attr name="secondaryTextColor" format="color" /> <attr name="keywords" format="string" /> <attr name="refreshInterval" format="integer" /> </declare-styleable> </resources> 

MainActivity.java

 import android.app.Activity; import android.os.Bundle; import android.util.Log; import com.admob.android.ads.AdManager; import com.admob.android.ads.AdView; import com.foo.application.R; public class MainActivity extends Activity { private AdView ad; public MainActivity ( ) { AdManager.setTestDevices ( new String[] { // made this up for this "012345678994814751742145548AAAAAAA" } ); AdManager.setTestAction ( "url" ); } @Override public void onCreate ( Bundle savedInstanceState ) { super.onCreate ( savedInstanceState ); setContentView(R.layout.main_layout); if ( AdManager.isTestDevice ( this ) ) { // this logs Log.w ( "foo-app", "we are on a test device" ); } ad = ( AdView ) this.findViewById ( R.id.ad ); if ( ad != null ) { ad.setVisibility ( View.VISIBLE ); ad.setAdListener ( new AdListener () ); } } } 

AdListener.java

 package com.foo.application import android.util.Log; import com.admob.android.ads.AdView; import com.admob.android.ads.SimpleAdListener; class AdListener extends SimpleAdListener { @Override public void onFailedToReceiveAd ( AdView adView ) { // this is what logs Log.w ( "foo-app", "failed to receive ad" ); super.onFailedToReceiveAd ( adView ); } @Override public void onFailedToReceiveRefreshedAd ( AdView adView ) { Log.w ( "foo-app", "failed to receive refreshed ad" ); super.onFailedToReceiveRefreshedAd ( adView ); } @Override public void onReceiveAd ( AdView adView ) { Log.w ( "foo-app", "receive ad" ); super.onReceiveAd ( adView ); } @Override public void onReceiveRefreshedAd ( AdView adView ) { Log.w ( "foo-app", "receive refreshed ad" ); super.onReceiveRefreshedAd ( adView ); } } 

В logcat я вижу следующее:

 INFO/AdMobSDK(29541): To get test ads on this device use AdManager.setTestDevices( new String[] { "012345678994814751742145548AAAAAAA" } ) WARN/AdMobSDK(29541): Ignoring requestFreshAd() because we are requesting an ad right now already. WARN/AdMobSDK(29541): Ignoring requestFreshAd() because we are requesting an ad right now already. WARN/foo-app(29541): we are on a test device WARN/foo-app(29541): failed to receive ad 

AdListener указывает, что он не может получить объявление. У меня активное соединение с данными, плюс я в тестовом режиме, поэтому он должен всегда показывать объявление, согласно admob wiki . Ошибок в logcat нет, равно как и закрытие приложения.

У кого-нибудь есть идеи или вы видите то, что я делаю неправильно?

Обновление: я получил ответ от admob, но все, что они сказали, было то, что я создавал aeveiw дважды, что я не

Solutions Collecting From Web of "Объявление Admob никогда не отображается в представлении"

Admob должен был включить это как предупреждение, но я отвлекся …

В вашем макете у вас есть android:padding="5dip" это, конечно, заставляет такие телефоны, как G1, «терять» часть своего доступного экранного объекта недвижимости (ниже 320dip). Это, конечно, минимальная ширина объявления admob, что приводит к его провалу. Затем вызывается onFailedToReceiveAd в слушателе без каких-либо объяснений.

Журналы содержат только

 WARN/AdMobSDK(347): Ignoring requestFreshAd() because we are requesting an ad right now already. 

Исправление прост, не используйте отступы или поля в корне ваших макетов, содержащих объявления. Взял некоторые эксперименты, но он работает.

Попробуйте избавиться от

  if ( ad != null ) { ad.setVisibility ( View.VISIBLE ); ad.setAdListener ( new AdListener () ); } 

И видеть, работает ли это, поскольку моя идентична без этих линий и прекрасно работает.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:layout_width="fill_parent" android:id="@+id/rltvLayout1" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/linearLayoutwebview" android:layout_height="wrap_content" android:layout_width="wrap_content" android:orientation="vertical"> <WebView android:id="@+id/webView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fitsSystemWindows="true" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:id="@+id/ad_layout" android:layout_height="wrap_content" android:gravity="bottom" android:layout_alignParentBottom="true" android:layout_alignBottom="@+id/home_layout"> <com.google.ads.AdView android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adUnitId="put here your id" ads:adSize="BANNER" android:id="@+id/adView" ads:refreshInterval="60" /> </LinearLayout> </RelativeLayout> 

Райан, вы установили идентификатор издателя Admob ???

  <meta-data android:value="YOUR_ADMOB_PUBLISHER_ID" android:name="ADMOB_PUBLISHER_ID" />