【问题标题】:Google service Ads behaves differently than AdMob SDK while loading ads?Google 服务广告在加载广告时的行为与 AdMob SDK 不同?
【发布时间】:2014-02-19 13:22:42
【问题描述】:

我最近将我的项目从 AdMob SDK 迁移到了 Google 服务广告,但是我在使用 Google 服务广告时遇到了一个小问题。

我在活动中有一个横幅广告视图,我会根据是否加载广告来动态调整布局中的按钮。当我使用 AdMob SDK 时它工作得很好,但现在使用 Google 服务广告,在加载广告之前,横幅总是保留在那里,空白。如果广告无法加载(比如没有网络),就会出现空白视图,这相当难看!这也是我想动态调整布局的原因……

我在更改代码时是否遗漏了什么?谢谢你的帮助!

这里是java代码和布局文件的摘录:

Java:

import com.google.android.gms.ads.*;
...
public class MyActivity extends Activity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    AdView adView = (AdView)findViewById(R.id.ad);
    AdRequest adRequest = new AdRequest.Builder().build();
    adView.loadAd(adRequest);
}
}

布局 XML:

...
  <com.google.android.gms.ads.AdView
    android:id="@+id/ad"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adUnitId="AD_PUB_ID"
    ads:adSize="BANNER"/>
</RelativeLayout>

【问题讨论】:

  • 总而言之,如何让adView在广告加载谷歌服务广告之前不占用空间?
  • 你能把你的 .java 类放在你集成 admob 的地方吗?还有清单。
  • @MohitRakhra,谢谢你的回答。我完全按照here 的建议进行了迁移。无论如何,我会在问题中发布文件内容。谢谢!

标签: android admob ads


【解决方案1】:

您可以添加一个 AdListener,并使广告仅在收到广告时可见。

代码如下:

        final AdView ad = new AdView(context);
        ad.setAdUnitId(publisherId);
        ad.setAdSize(AdSize.SMART_BANNER);

        final AdListener listener = new AdListener() {
            @Override
            public void onAdLoaded() {
                ad.setVisibility(View.VISIBLE);
                super.onAdLoaded();
            }
        };

        ad.setAdListener(listener);
        ad.setVisibility(View.GONE);

        adParent.addView(ad);
        ad.loadAd(new AdRequest.Builder().build());

由于存在/曾经存在的问题,即 AdMob 广告会在仍在加载时被销毁时生成 ANR。在致电pause()destroy() 之前,我通常还会检查广告的可见性。

【讨论】:

  • 非常感谢您的回答!如果我不知道哪里出了问题,我想我会使用它。基本上我认为代码和布局已迁移到 Google 服务 API,相当于 AdMob SDK,所以我希望它会像以前一样运行。
  • 始终显示视图是新 api 的默认行为。这真的变了,和以前不一样了。
  • 再次感谢您!它现在消除了我的疑问,但是你能引导我到描述这种变化的谷歌网站吗?非常感谢!
【解决方案2】:

要小心,因为这样弹出广告横幅违反了 Google 广告政策。 一个月前我收到了一封来自 Google 的邮件,我不得不改变这种行为以避免我的应用被 Play 商店禁止。 很多开发者都收到了相同的邮件。

【讨论】:

  • 我确实没有弹出广告横幅。我试图做的是根据广告加载的状态动态决定布局。我讨厌弹出广告,这很烦人。
  • 我知道,但结果是一样的。横幅将根据广告加载的成功随时弹出(如果您愿意,横幅将立即出现),但如果用户在横幅位置附近按下控件,他可能会意外按下横幅。因此,Google 现在强制为广告横幅保留部分屏幕,即使没有可显示的内容
  • 好的,这确实有道理...但是在那里留下一些空白屏幕确实看起来很奇怪...
  • 如果用户没有互联网连接怎么办?然后就没有 das 可以显示了,所以在我看来,空白的 adview 也应该消失了......
  • 没有广告横幅现在可以用作占位符。如果没有可显示的内容,它将显示一个空白区域,否则将显示广告
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多