Java代码强制所有设备显示测试广告

问题描述:

AdManager.setTestDevices(new String[] { 
    AdManager.TEST_EMULATOR, // Android emulator 
    "E83D20734F72FB3108F104ABC0FFC738", // My T-Mobile G1 Test Phone 
} 

我想给我的测试Android应用程序出5-10我的朋友。 这些人中有几个人生活在1000英里以外,所以没有办法“使用DDMS”或“将手机挂在我的开发机器上”。Java代码强制所有设备显示测试广告

我需要它到总是只显示AdMob测试广告。

(它是当前显示内容的广告。)

我不知道(或想知道的)每个人的“设备ID码”。

我不想将每个1硬编码到我的应用程序。

(并添加所有新的所有的时间。)

有Java代码会说:“任何设备使用这个应用程序,是一个试验装置,所以只显示测试广告”?

也许你可以尝试在飞行中添加的测试设备:

AdManager.addTestDevice(Settings.Secure.getString(context.getContentResolver(), "android_id"))); 
// or Settings.Secure.ANDROID_ID if no context available 

(我没有测试此代码。)

编辑:

反编译的AdMob JAR库提供了:

AdRequest.java

public boolean isTestDevice(Context context) 
    { 
    if (this.i != null) 
    { 
     if ((
     context = AdUtil.a(context)) == null) 
     { 
     return false; 
     } 

     if (this.i.contains(context)) { 
     return true; 
     } 
    } 

    return false; 
    } 

看着AdUtil.a

public static String a(Context paramContext) 
    { 
    if (c == null) 
    { 
     if (((
     paramContext = Settings.Secure.getString(paramContext.getContentResolver(), "android_id")) == null) || 
     (c())) 
     paramContext = a("emulator"); 
     else { 
     paramContext = a(paramContext); 
     } 

     if (paramContext == null) { 
     return null; 
     } 

     c = paramContext.toUpperCase(Locale.US); 
    } 

    return c; 
    } 

代码进行模糊处理,但我们清楚地看到,这是对你在AdManager.addTestDevice给了值(一个或多个)测试Settings.Secure.ANDROID_ID

+0

我会试试看。但是,AdMob需要“设备ID”还是“加密的设备ID?” – Carol 2012-01-27 08:05:15

+0

我编辑了我的答案。 – OcuS 2012-01-27 08:16:34

+0

上下文方法返回一个长的字母/数字字符串。 Settings.Secure.ANDROID_ID只是返回“android_id”本身。 1都不是addTestDevice工作所需的“设备ID”。 – Carol 2012-01-27 18:24:18

尝试使用AdRequest.setTestDevices方法。

AdRequest.setTestDevices(new String[] { 
    AdRequest.TEST_EMULATOR, // Android emulator 
    "E83D20734F72FB3108F104ABC0FFC738", // My T-Mobile G1 Test Phone 
}); 

您可能会在Google AdMob SDK重写之前查看旧的AdMob文档。

没有办法说你想在所有设备上测试广告。这是一项预防措施,以便您不会意外地向所有人发布为所有测试广告提供服务的应用。

+0

那么,我如何从20个不同的测试设备获得所有这些“神奇数字”......距离这里1000英里的许多“魔术数字”? (单个beta测试人员永远不会想要安装eclipse,SDK和java,并且设置一个完整的开发人员环境来获取这个1号码。) – Carol 2012-02-06 20:44:23

+0

我知道如何让他们安装一个应用程序吐出日志。我使用'aLogcat'。如果他们安装该应用并将其投入到您的应用中,然后进入您的广告请求活动,他们可以重新进入一个Logcat,并在日志中找到类似如下内容的行:“要在此设备上获得测试广告,请致电AdRequest。 addTestDevice( “E83D20734F72FB3108F104ABC0FFC738”);' – 2012-02-07 00:27:03

我在测试版本中完全禁用了广告系统,并且仅在本地设备上启用本地调试版本。 您可以显示静态图片来代替广告,这样您仍然可以拥有相同的布局。