2

我不知道为什么会这样,这让我很生气。长话短说,在我通过 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

4 回答 4

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/...参数内展示。如果有人知道,请分享!

于 2013-05-24T00:14:16.167 回答
1

您收到错误是因为 728x90 dp 的广告在纵向模式下的 Nexus 7 上太大,只有 600 dp 宽。我无法想象其他网络如何使 728x90 图像适合 600x90,除非他们缩小高度以保持纵横比。AdMob 不会像那样缩放广告,而是会引发此警告。

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

于 2013-02-11T23:26:56.500 回答
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>

这在它的父视图中并且没有被移除

于 2014-07-11T05:19:19.217 回答
1

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

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

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

于 2013-02-12T23:31:13.717 回答