12

随着Google Play 服务 10 月的更新,AdMob 被集成到库中,这意味着 Android 开发人员不再需要将其包含GoogleAdMobAdsSdk-x.x.x.jar在项目的libs文件夹中。有一个很好的迁移指南,解释了如何com.google.ads.*com.google.android.gms.ads.*.

到现在为止还挺好。迁移是小菜一碟,但是……总有一个“但是”。

以前,com.google.ads.AdRequest曾经有一种setLocation(Location)方法可以让您增加定位信息。该选项在 中不再可用com.google.android.gms.ads.AdRequest,在其Builder类中也不再可用。

我想我的问题是:它去哪儿了,为什么去了?where可能很容易回答,因为它似乎已被删除。不过,我希望有人在这里证明我错了,所以如果我忽略了某些东西,请随时发表评论。这留下了为什么

现在我只能推测它被删除的原因:

  • 当 AdMob 被重构为 Google Play 服务的一部分时,它被忽略了。
  • 出于隐私考虑,Google 决定不再支持此功能。
  • 由于 AdMob 现在是 Google Play 服务的一部分,也许它与其位置 API(即 Fused Location Provider)集成,并在可用时自动提供位置信息?

第一个选项似乎不太可能,而第二个选项是可以理解的。不确定第三个,但考虑到隐私影响,也不太可能。有人可以就此事给出结论性的答案,或者指出可靠的来源吗?


注意:是的,我知道文档中的以下评论:

出于对用户隐私的尊重,Google 要求您仅在您的应用已使用该信息的情况下指定位置和人口统计数据。

出现此问题的应用程序已经是位置感知的。事实上,这是应用程序的一个相当重要的方面。正如注释所说,由于应用程序已经使用了用户的位置,因此到目前为止,向其提供广告请求一直是一个有效的用例。


更新

1 月 9 日关于即将发布的 Google Play 服务 4.1 更新的博文中,提到了通过新的 API 重新引入位置定位:

Google 移动广告
借助 Google Play 服务 4.1,Google 移动广告 SDK 现在完全支持 DFP、DoubleClick Ad Exchange 和移动应用搜索广告。您还可以在请求广告时使用发布商提供的新位置 API 向 Google 提供位置。基于位置的广告可以提高您的应用获利能力。

目前我还没有找到关于这个新 API 的任何更新文档,但希望它很快就会可用 - 一旦 Google Play 服务 4.1 的推出完成。在那之前,我将在下面保留我的初步答案以供参考。

Google 现在已经更新了有关新功能的 Android 文档。请参阅下面接受的答案。

4

1 回答 1

5

最终更新:

Google 终于更新了 Android 文档以包含新的发布者提供的位置 API。毫不奇怪,这些都被粘在了构建器模式中,并且与之前的工作方式几乎相同:

AdRequest.Builder.setLocation(Location)

以下答案仅用于教育目的;如果上面回答了您的问题,则无需进一步查看。


更新:似乎位置定位将通过 Google Play 服务 4.1 中的新 API 重新启用。有关更多详细信息,请参阅对原始问题的更新。


由于缺乏答案,我暂时将这个简要分析。我快速浏览了旧的 AdMob SDK 和新的 Google Play 服务,试图发现更多信息。

这是我迄今为止的发现,在一张小表格中列出。基本上,这给出了与发送的各种键值对的比较AdRequest

 Admob SDK:                     | Google Play Services:
--------------------------------|--------------------------------
 map.put("kw", ...);            | map.put("kw", ...);
 map.put("cust_gender", ...);   | map.put("cust_gender", ...);
 map.put("cust_age", ...);      | map.put("cust_age", ...);
 map.put("uule", ...);          |
 map.put("testing", ...);       |
 map.put("pto", ...);           |
 map.put("cipa", ...);          |
 map.put("adtest", ...);        | map.put("adtest", ...);
 map.put("extras", ...);        | map.put("extras", ...);
                                | map.put("tag_for_child_directed_treatment", ...);
--------------------------------|--------------------------------

Legend:
* kw = keyword
* cust_gender = gender
* cust_age = birthday
* uule = location
* testing = testing
* pto / cipa = plus one opt out
* adtest = is test device
* extras = extras

在旧版 AdMob SDK 中,uule密钥用于绑定位置。不幸的是,这在 Google Play 服务中找不到。这表明我最初的问题中的第三个猜测很可能不是这种情况。在某种程度上,这是有道理的,因为这肯定会在某处记录在案,仅仅是因为所需权限的更改。

我也倾向于说位置功能没有被忽视。它不是唯一缺失的键,但大多数其他主流键都在那里,比如年龄、性别、关键字等。相反,我开始相信它是故意遗漏的,放弃了对它的支持。如果我冒险猜测,那很可能是因为隐私问题。

如果有人(特别是来自 Google 的人)可以证实这一点,那就太好了。此外,如果您发现任何与这些发现相矛盾的内容,请务必发表评论。我很高兴被证明是错误的。

于 2013-11-06T18:28:39.370 回答