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

使用 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(即融合位置提供商)集成,并自动提供位置信息(如果可用)?

一个选择似乎不太可能,而第二个选项是可以理解的.不知道第三个,但考虑到隐私的影响,也不太可能.有什么机会有人可以就此事作出决定性的答案,还是指出一个可靠的来源?

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

Out of respect for user privacy,Google asks that you only specify
location and demographic data if that information is already used by
your app.

该问题提出的应用程序已经是位置感知.其实这是应用程序的一个重要方面.正如笔记所述,由于用户的位置已被应用程序使用,所以向其提供广告请求已经是一个有效的用例.

更新:

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

Google Mobile Ads
With Google Play services 4.1,the Google Mobile Ads
SDK Now fully supports DoubleClick for Publishers,DoubleClick Ad
Exchange,and Search Ads for Mobile Apps. You can also use a new
publisher-provided location API to provide Google with the location
when requesting ads. location-based ads can improve your app
monetization.

目前,我还没有找到关于这个新API的任何更新的文档,但是预计它将在即将推出 – Google Play Services 4.1推出完成后立即开始使用.在此之前,我将保留我的初步答案以供参考.

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

解决方法

最后更新:

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服务中无处可寻.这表明我原来的问题中的第三次猜测很可能不会.在某种程度上,这是有道理的,因为这绝对是在某处被记录的东西,只是因为所需权限的变化.

我也倾向于说,位置功能并没有被忽视.这不是唯一缺少的关键,但大多数其他主流的都在那里,如年龄,性别,关键字等.而是开始认为它被遗漏了,放弃了它的支持.如果我冒昧猜测,那么很可能是由于隐私问题.

如果任何人(特别是Google的人)可以确认这一点,那将是巨大的.另外,如果发现任何与这些发现相矛盾的东西,绝对会留下评论.我很高兴被证明是错误的.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...