【问题标题】:Why remove AdMob's addTestDevice() in production?为什么要在生产环境中移除 AdMob 的 addTestDevice()?
【发布时间】:2017-07-13 00:35:04
【问题描述】:

在这个页面上

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

它说

注意:一定要删除之前设置这些测试设备的代码 你发布你的应用程序。

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

【问题讨论】:

    标签: android testing click admob ads


    【解决方案1】:

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

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

    【讨论】:

    • 嗨,这个测试广告分类是否会阻止我从我的应用中显示的广告中获利?我对此非常不确定和不清楚!请澄清您的获利@Peter Smith
    • 我真的很困惑。据我所知,谷歌说要删除它,但我不太明白为什么。这仍然存在吗?我的意思是,不移除不会造成伤害?
    • 我们是否应该删除代码?请以是或否的形式回复
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 其他设备有可能和我有相同的设备ID吗?
      • 否,但任何人都可以模仿测试设备 ID,如果他正在使用模拟器来测试您的应用程序或有根的 android 设备。我曾经这样做是为了在模拟器中测试一个旧应用程序,看看我是否得到了测试广告。
      • 由于升级到无广告版本是应用内购买,我如何在不看到真实广告的情况下为自己提供应用的无广告版本? (查看或点击您自己的广告违反 AdMob 政策)
      • @user8298723 只要不点击就没有问题
      • Google 通常甚至禁止展示用于测试的实时广告。它在文档中无处不在。然而,谷歌知道开发者不会听从它的建议,因此在展示此类广告进行测试时会忽略(或未能检测到)。但是,仅仅因为开发人员没有被抓到并不意味着他们没有违规。查看,甚至只是加载,真正的广告会弄乱 Google 的数据(尽管是在微观层面上),所以我建议始终保持安全。
      【解决方案4】:

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

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

      【讨论】:

      • 如果字符串无关紧要,将任何字符串传递给 addTestDevice 的目的是什么?通过 Android Studio 等在实体手机上进行测试?
      • 有一些特定的字符串可以传递,所以它可以在模拟器上运行
      • 这绝对不是真的。
      • @William 您可能应该在答案或评论中详细说明
      • deviceId 指定为 addTestDevice() 的设备将接收测试广告。所有其他设备将收到真实的广告。迁移到生产环境时无需删除此语句。
      猜你喜欢
      • 2019-05-12
      • 2010-09-16
      • 2022-01-22
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 2015-07-14
      相关资源
      最近更新 更多