【发布时间】:2011-01-28 14:54:17
【问题描述】:
我在两天前发布了我的 Android 应用,使用了 admob 广告。我用我的个人手机作为测试手机,但在发布之前取出了测试模式代码。我的 admob 状态是活动的,我在报告中收到请求和印象,但是每当我尝试在我的个人手机上使用该应用程序时,我只会得到“测试广告”。我不知道为什么。我查看了我的应用程序的代码,找不到任何问题。我确实删除了该应用程序的测试版本,然后从市场上下载了已发布的版本。
【问题讨论】:
我在两天前发布了我的 Android 应用,使用了 admob 广告。我用我的个人手机作为测试手机,但在发布之前取出了测试模式代码。我的 admob 状态是活动的,我在报告中收到请求和印象,但是每当我尝试在我的个人手机上使用该应用程序时,我只会得到“测试广告”。我不知道为什么。我查看了我的应用程序的代码,找不到任何问题。我确实删除了该应用程序的测试版本,然后从市场上下载了已发布的版本。
【问题讨论】:
我不确定为什么测试广告会出现在您的应用中,但关闭它们的一种方法是转到您的 Admob 应用设置,然后选择“对所有请求禁用测试模式”选项作为您的测试模式设置。
【讨论】:
您的客户不会看到调试广告。你可能有这样的一行:
AdManager.setTestDevices( new String[] {
AdManager.TEST_EMULATOR, // Android emulator
"E83D20734F72FB3108F104ABC0FFC738", // My T-Mobile G1 Test Phone
}
假设 E83D20734F72FB3108F104ABC0FFC738 是您的个人电话,任何时候该电话发出请求都会收到一个测试广告。所有其他手机都没有资格投放测试广告,除非它们也单独添加到该方法中。
【讨论】:
尼克的回答有效。 (但缺少最后的括号。)
但是,如果我想将我的(尚未发布的)Android 应用分发给 10 位朋友怎么办?
是否有任何 java 代码显示“将所有手机视为测试设备”?
【讨论】:
以下是将所有设备视为测试设备的代码:
String aid = Settings.Secure.getString(context.getContentResolver(), "android_id");
try {
Object obj;
((MessageDigest) (obj = MessageDigest.getInstance("MD5"))).update(aid.getBytes(), 0, aid.length());
aid = String.format("%032X", new Object[] { new BigInteger(1, ((MessageDigest) obj).digest()) });
} catch (NoSuchAlgorithmException localNoSuchAlgorithmException) {
aid = aid.substring(0, 32);
}
adRequest.addTestDevice(aid);
【讨论】: