AdMob通过MoPub - 没有足够的空间来展示广告

时间:2013-02-10 21:18:09

标签: android admob mopub

我不知道为什么会这样,这让我很生气。简而言之,在我通过MoPub使用的所有广告网络中,AdMob似乎是唯一一个不显示广告的广告,声称它没有足够的空间。在MoPub中,我有一个电话广告单元和一个平板电脑广告单元。这是具体的日志:

02-10 09:44:44.094: I/Ads(9363): Request scenario: Online server request.
02-10 09:44:50.114: D/webviewglue(9363): nativeDestroy view: 0x678b8418
02-10 09:44:50.124: I/Ads(9363): onReceiveAd()
02-10 09:44:50.124: D/MoPub(9363): Google AdMob load succeeded. Showing ad...
02-10 09:44:50.124: D/MoPub(9363): adLoaded
02-10 09:44:50.124: D/MoPub(9363): Tracking impression for native adapter.
02-10 09:44:50.144: W/Ads(9363): Not enough space to show ad! Wants: <969, 119>, Has: <800, 1073741823>
02-10 09:44:50.144: W/Ads(9363): Not enough space to show ad! Wants: <969, 119>, Has: <800, 1073741823>

广告已加载但未显示,因为显然它需要更多空间。我只想展示横幅广告。我正在测试Nexus 7。

我使用的其他网络是LeadBolt和Millennial。他们在同一个空间内展示横幅广告。

我的java代码,用于选择要显示的广告单元(基于屏幕尺寸的手机或平板电脑):

    //Advert if statement
    Configuration config = getResources().getConfiguration();

            if ((config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) ==
                            Configuration.SCREENLAYOUT_SIZE_LARGE) {
                    //Tablet
                    mAdViewTabletLarge = (MoPubView) findViewById(R.id.LargeAdvert);
                            mAdViewTabletLarge.setAdUnitId("id here");
                            mAdViewTabletLarge.setVisibility(Application.getAdVisibiltyForEdition(this.getApplicationContext()));
                            mAdViewTabletLarge.loadAd();
            }
            else if ((config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) ==
                                    Configuration.SCREENLAYOUT_SIZE_XLARGE) {
                    //Tablet
                    mAdViewTabletXLarge = (MoPubView) findViewById(R.id.LargeAdvert);
                            mAdViewTabletXLarge.setAdUnitId("id here");
                            mAdViewTabletXLarge.setVisibility(Application.getAdVisibiltyForEdition(this.getApplicationContext()));
                            mAdViewTabletXLarge.loadAd();
            }
            else {
                    //Phone
                    mAdViewPhone = (MoPubView) findViewById(R.id.LargeAdvert);
                            mAdViewPhone.setAdUnitId("id here");
                            mAdViewPhone.setVisibility(Application.getAdVisibiltyForEdition(this.getApplicationContext()));
                            mAdViewPhone.loadAd();
            }

任何人都知道发生了什么事吗?

4 个答案:

答案 0 :(得分:3)

我在Nexus 7上遇到了同样的问题。我目前正在使用Eclipse Juno,Service Release 1.在这个版本中有@dimension / ... 引用自动添加到xml布局文件中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   ...
   ...
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   ...
   ...

当我删除@dimension / ...引用时,错误消失,广告显示。不确定是否存在覆盖错误的技巧,并允许广告在@dimension / ...参数中显示。如果有人知道,请分享!

答案 1 :(得分:1)

您收到错误是因为在肖像模式下,Nexus 7上的728x90 dp广告太大,宽度仅为600 dp。我无法想象其他网络如何使728x90图像适合600x90,除非他们缩小高度以保持纵横比。 AdMob不会对此类广告进行扩展,而是会抛出此警告。

听起来像Mopub限制,平板电脑广告只能是一个尺寸。我不熟悉Mopub前端设置,但也许您可以为7英寸平板电脑创建一个尺寸较小的第二个广告,并在运行时检查您的屏幕宽度以确定要显示的广告。

答案 2 :(得分:1)

您应该在MoPub中创建一个320x50广告单元和一个728x90广告单元,检测设备的宽度,然后根据设备的宽度有条件地触发它们。

如果屏幕宽度小于728像素,请点亮320x50广告单元。

如果更高,请使用排行榜广告单元。

答案 3 :(得分:1)

此错误的原因:

您尝试展示广告的视图将从父视图中删除。 确定

 <LinearLayout
      android:id="@+id/layoutAdmobGame"
      android:layout_width="wrap_content"
      android:layout_height="52dp"
      android:layout_alignParentBottom="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentRight="true"
      android:background="@android:color/transparent"
      android:gravity="center_horizontal"
      android:orientation="vertical" >
</LinearLayout>

这在其父视图中并未被删除