1

当我做一个

adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
adView.loadAd(adRequest); 

logcat 似乎报告说我正在请求广告,但随后说

09-21 11:48:13.720: W/Ads(712): Invalid unknown request error: Cannot determine request type. 

您的广告单元 ID 是否正确?然而,我使用的 id 是从 AdMod API 代码请求/响应屏幕正确粘贴的。我究竟做错了什么?

当我尝试使用真实设备(运行 Android 2.2.1 的 HTC Inspire)时,我更加困惑。Logcat 保持沉默,但我没有收到任何测试广告。有人能告诉我在下面用什么代替“xxxxxxxx”:

adRequest.addTestDevice("xxxxxxxx");

我已经尝试过文本字符串“TEST_DEVICE_ID”,我的设备的序列号,甚至更愚蠢的东西。没有喜悦。我需要对序列号进行哈希处理吗?我正在使用 JDK 1.7。

4

2 回答 2

5

检查您的广告单元 ID。是您从 AdMob 获得的广告单元 ID 吗?您的广告单元中有空格吗?您收到该错误是因为 AdMob 无法识别该 ID。

至于设置测试设备,您可以通过以下方式为模拟器设置测试模式:

adRequest.addTestDevice(AdRequest.TEST_EMULATOR);

要在设备上设置测试模式,请在设备上发出 AdRequest,并检查 LogCat。SDK 会这样说:

To get test ads on this device, call adRequest.addTestDevice("0123456789ABCDEF0123456789ABCDEF");

这个数字是你的设备 ID 的哈希值,它是最容易从 LogCat 获得的。

于 2012-09-21T23:40:30.813 回答
1

首先,我不知道您是否在代码中解决了在模拟器中与在真实设备上的差异问题。您需要区分您的应用程序是在模拟器还是真实设备上运行,这可以通过以下方式完成

    boolean inEmulator = "generic".equals(Build.BRAND.toLowerCase());

如果您在模拟器中,这将返回 true,如果不在模拟器中,则返回 false。接下来,您需要根据 inEmulotor 的值构建一种处理广告的方法

    if (inEmulator) 
    {
        adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
    } 
    else 
    {
        adRequest.addTestDevice("11111111101111111110111111111011");
    }

在这里我们要么必须添加一个仿真器测试设备,要么你需要一个真实设备的 32char 设备 ID。(这个 ID 是字母数字的)这个真实设备的 ID 可以通过在真实设备上运行 admob 来找到,并会出现在 logcat 中。

最后,您需要设置 testing = true 并开始加载广告。

    adRequest.setTesting(true);
    adView.loadAd(adRequest);

总而言之,此代码的工作集可能如下所示:

    boolean isTestingAds = true; //this is a switch, to make it easy on changing modes

    boolean inEmulator = "generic".equals(Build.BRAND.toLowerCase());
    AdView adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID);

    AdRequest adRequest = new AdRequest();

    if (isTestingAds) 
    {
        if (inEmulator) 
        {
            adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
        } 
        else 
        {
            adRequest.addTestDevice("11111111101111111110111111111011");
        }
        adRequest.setTesting(true);
    }

    adView.loadAd(adRequest);

不要忘记将广告视图添加到您的内容视图,以及更新清单文件。MY_AD_UNIT_ID 是您从 admob 获得的用于此特定应用的代码。

所以最后找到你的ID,设置

    isTestingAds = false;

然后您需要将设备设置为测试的 # 将出现在 LogCat 中。

如果您没有从您的真实设备获取和记录数据,那么这完全是另一个问题。

于 2012-09-21T21:25:49.967 回答