现在AdMob已成为Google Play服务的一部分,如何通过AdRequest提供位置?

时间:2013-10-31 23:08:06

标签: android admob google-play-services

使用October update of the Google Play Services,AdMob已集成到库中,这意味着Android开发人员不再需要将GoogleAdMobAdsSdk-x.x.x.jar包含在项目的libs文件夹中。有一个很好的migration guide,解释了如何从com.google.ads.*迁移到com.google.android.gms.ads.*

到目前为止,这么好。迁移是小菜一碟,但......总有一个“但是”。

以前,com.google.ads.AdRequest过去常常使用setLocation(Location)方法来扩充定位信息。该选项在com.google.android.gms.ads.AdRequest中以及Builder类中不再可用。

我想我的问题是:它在哪里以及为什么会这样? 可能很容易回答,因为它似乎已被删除。我喜欢有人在这里证明我错了,所以如果我忽略了什么,请随时评论。这留下了为什么

现在我只能猜测它被移除的原因:

  • 当AdMob被重构为成为Google Play服务的一部分时,它被忽略了。
  • 出于隐私问题,Google已决定不再支持此功能。
  • 由于AdMob现在是Google Play服务的一部分,或许它与其Location API(即融合位置提供商)集成,并自动提供位置信息(如果有)?

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


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

  

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

此问题出现的应用已经具有位置感知功能。事实上,它是应用程序的一个相当重要的方面。正如笔记所说,由于应用程序已经使用了用户的位置,因此向其提供广告请求至今仍是一个有效的用例。


更新

使用9 January blog post on the upcoming Google Play Services 4.1 update时,会提到通过新API重新引入位置定位:

  

Google移动广告
使用Google Play服务4.1,Google移动广告   SDK现在完全支持DFP广告管理系统DFP广告管理系统   移动应用的Exchange和搜索广告。 您也可以使用新的   发布商提供的位置API,为Google提供位置信息   请求广告时。基于位置的广告可以改善您的应用   获利。

目前我还没有找到有关此新API的任何更新文档,但预计很快就会推出 - 只要Google Play Services 4.1的推出完成即可。在此之前,我会在下面保留我的初步答案以供参考。

Google现已更新了有关新功能的Android文档。见下面接受的答案。

1 个答案:

答案 0 :(得分:5)

最终更新:

Google最终更新了Android文档,以包含新发布商提供的位置API。毫不奇怪,这些都粘在了构建器模式中,与之前的工作原理完全相同:

AdRequest.Builder.setLocation(Location)

以下答案仅供教育之用;如果上面回答了你的问题,就没有必要再进一步了解。


更新:系统会通过Google Play Services 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服务无处可寻。这表明我原来问题中的第三种猜测很可能不是这种情况。在某种程度上,这是有道理的,因为这肯定是在某处记录的,仅仅是因为所需权限的变化。

我也倾向于说位置功能不被忽视。这不是唯一缺失的关键,但大多数其他主流的关键在于那里,如年龄,性别,关键词等。相反,我开始相信它被故意排除,不再支持它。如果我冒险猜测,那很可能是出于隐私问题。

如果有人(尤其是谷歌的某个人)可以证实这一点,那就太好了。此外,如果您发现任何与这些发现相矛盾的内容,绝大多数都会发表评论。我很高兴被证明是错的。