adRequest.addTestDevice()参数要求令我困惑

时间:2012-09-21 19:26:05

标签: java android admob

我做的时候

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。

2 个答案:

答案 0 :(得分: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获取最简单。

答案 1 :(得分:1)

首先,我不知道你是否解决了代码中真实设备与模拟器的区别问题。您需要区分在模拟器或真实设备上运行的应用程序,可以使用以下

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

如果您在模拟器中,则会返回true,如果不是,则返回false。接下来,您需要构建一种处理广告的方法,具体取决于inEmulaotor

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

这里我们要么添加一个模拟器测试设备,要么添加一个真实设备的32char设备ID。 (此ID是字母数字)可以通过在测试模式下在真实设备上运行admob找到真实设备的此ID,并将显示在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中。

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