【问题标题】:AdMob via MoPub - Not enough space to show ad通过 MoPub 的 AdMob - 没有足够的空间来展示广告
【发布时间】:2013-02-10 21:18:09
【问题描述】:

我不知道为什么会这样,这让我发疯。长话短说,在我通过 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();
            }

有人知道发生了什么吗?

【问题讨论】:

  • 愚蠢的问题,但它有多少空间?如果它没有 969x119,它根本不会显示。根据日志,您有 800 个水平(不够),以及一些随机溢出的垂直数字。记录getWidth()getHeight() 揭示了什么?
  • 澄清一下,AdMob 比其他网络更挑剔。其他人仍会投放广告并让应用程序对其进行缩放。 AdMob 希望更严格地遵守他们的规则/指南。
  • 我知道它没有足够的空间,但是对于横幅广告,我不明白为什么它需要这么大的广告。在 MoPub 中,我将平板电脑广告设置为 728x90。这是我对它的唯一控制。对于这么大的东西,我想我永远不会有足够的空间,也许在 10 英寸平板电脑上但不是 7 英寸平板电脑。
  • 没错,你可能不会,这取决于分辨率。您可能还想检查可用空间,并且可能有一个单独的广告单元用于“大型但不是 AdMob 大型”平板电脑。我同意这很糟糕,但我们这些可怜的开发者对广告的控制权只有这么多。
  • 嗯,AdMob 是这里的异常,所以最坏的情况是我可以摆脱它并尝试另一个网络。当然,我总是可以将广告单元设置为正常的 350x50,这是我一直在考虑的,不那么具有侵入性等等。感谢您的建议。

标签: android admob mopub


【解决方案1】:

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

【讨论】:

  • 就是这样!谢谢!!
【解决方案2】:

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

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

【讨论】:

  • 我可以想象是这样。其他广告无法缩放,广告不适合屏幕。我知道我不应该允许这样做,但正如你所说,MoPub 只允许一种尺寸,这是一种耻辱。无论如何,我已将其缩小,因此从现在开始,728x90 的广告将仅在 10 英寸平板电脑上显示,而 350x50 的手机广告将在 nexus 7 上显示。不太理想,但还不错。我的下一个问题是弄清楚为什么点击千禧一代广告完全没有任何作用。一个接一个的问题!
  • 对于 7" 平板电脑,更合适的尺寸是 468x60。我有点惊讶 Mopub 不提供这个。回复:千禧一代,我碰巧也有一个可能的解释。你'可能正在使用 API 17 或 18 的设备上进行测试。他们有一些问题,在 API 16 之后点击他们的广告没有任何作用。
  • 是的,我的 Nexus 7 是 API 17 设备。有点松了一口气,这不是我的结局。感谢您的帮助。
【解决方案3】:

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

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

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

【讨论】:

  • 是的,这是我最初的想法,但我发现 LARGE - XLARGE 条件句更容易。在尝试调试这些问题时,我学会了如何获取设备的屏幕宽度并在其上编写 if 语句,因此我将更新我的代码。
  • 我刚刚意识到即使这样也行不通,因为 admob 要求设备宽度为 969。我可以保持原样或调用它,以便如果宽度高于 970,它应该显示平板电脑广告。 7Inch tabets 的设备宽度将超过 728,因此会出现同样的问题。
【解决方案4】:

这个错误的原因:

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

 <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>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多