为什么要在生产环境中删除 AdMob 的 addTestDevice()?

Why remove AdMob's addTestDevice() in production?

在这个页面上

https://developers.google.com/admob/android/test-ads#add_your_test_device

它说

Note: Be sure to remove the code that sets these test devices before you release your app.

谁能解释一下为什么?为什么无论如何我都不能离开发送我的特定设备测试广告的代码行?这是否有助于防止我违反 AdMob 关于开发人员不会意外给自己错误印象或点击的规则?

没有确切的理由说明为什么要删除使用测试设备投放广告的那一行。作为发布应用程序时的一般规则,应删除所有用于测试和调试的痕迹,以免干扰应用程序的发布版本,并避免应用程序中出现任何循环漏洞。在您的代码中使用该行,这意味着如果有人使用设备使用相同的测试 ID 测试您的应用程序,您将不会从 admob 获得任何信息,因为它使用的是测试设备 ID 而不是实际设备 ID。我通常做的只是将其注释掉,以便稍后在为另一个版本修改我的应用程序时进行测试。

如果您在生产环境中使用了 addTestDevice(),无论传递给该方法的设备 ID 是什么,用户都看不到真正的广告。

您应该只在测试中使用此代码。

我没有在我的任何应用程序中删除 testdevice 指令。这是为了保护我自己——当我从 App Store 下载自己的应用程序时,我仍然只想在自己的设备上看到标记为测试广告的广告。留下代码行对我没有任何不利影响,最重要的是 如果我无意中点击其中一个广告,它可以保护我免受 Google 禁止我使用 Admob。 Admob 特别反对点击显示在您自己的应用程序中的您自己的非测试广告。请放心,所有其他用户(不在 testdevice 指令内的用户)仍会看到未标记为 testAds 的真实广告。

2019 年 6 月编辑 - 2 年后我仍然这样做。在最新的 Admob API 中,您会看到真实公司的真实广告,但它的顶部会有一个小的 "TestAd" 文字。这表示该广告被标记为测试广告,您不会因点击它而受到 Admob 的惩罚。切勿在没有 TestAd 文字的情况下点击您自己的广告!!!

文档说在生产中删除测试设备的原因是存在一个低风险的安全问题,如果您将该代码留在您的应用程序中,理论上有人可以对 APK 进行反混淆处理,获取您的哈希值,并将您检测为应用程序的作者,如果他们将一些恶意软件放入您设备上的其他应用程序中。从应用程序中删除测试设备 ID 消除了这种风险。

如果您可以承担该风险,最好将测试设备 ID 留在应用中,这样您就可以继续点击生产中该设备的广告,而不必担心产生无效流量。