2

这里有一个奇怪的问题:每当我通过 xml 设置测试模式时,我都会在模拟器中收到预期的测试广告。然而,当我尝试以编程方式做同样的事情时,我似乎得到了真正的广告。根据 Admob 文档,这两种方法应该是等价的,不是吗?这是我的xml代码:

 <com.google.ads.AdView
                    android:id="@+id/adView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    ads:adSize="BANNER"
                    ads:adUnitId="xxxxxxxxxxx"
                    ads:loadAdOnCreate="true">
    </com.google.ads.AdView>

这是相关的Java代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    AdRequest adRequest = new AdRequest();
    adRequest.addTestDevice(AdRequest.TEST_EMULATOR);

}

如前所述,如果我将行 ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID" 插入到上面的 xml 代码中,我得到的测试广告就好了。有任何想法吗?

4

2 回答 2

1

我相信您必须在 AdView 对象上调用 .loadAd(adRequest) 。

在此处查看 Google 的 AdMob 文档

添加 com.google.ads.AdView部分。

于 2012-07-17T17:34:09.717 回答
1

您不必以编程方式调用它。

我花了一段时间才知道什么设备是 AdMob 的 sdk 期待什么,因为我认为这与真实设备有关,例如 (adb devices)

但这里有一条来自官方文档的评论来澄清它。

“将出现一条日志消息,其中包含将当前设备添加到测试设备列表所需的代码”

您可能会收到类似的消息

I/Ads(26674): To get test ads on this device, call adRequest.addTestDevice("F1254CDFBA84BDC27F5C7C6E12445D06");

之后您要做的就是将此 ID 放入您的布局 xml 中,如下所示

<com.google.ads.AdView
    android:layout_alignParentBottom="true"
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="@string/publisherId"
    ads:loadAdOnCreate="true"
    ads:testDevices="TEST_EMULATOR, F1254CDFBA84BDC27F5C7C6E12445D06" />

希望对大家有所帮助

保罗·米格尔·阿尔梅达

于 2013-08-09T00:42:51.650 回答