如我们之前介绍,一方面,GDPR对有效的“同意”设置了比较严格的条件;另一方面,“同意”是处理用户数据最为稳妥的法律依据。
很多人认为,因为条件的苛刻,“同意”作为传统的用户让渡数据权利的途径,在GDPR的语境下已经丧失了存活的空间。但我们观察到,大量的互联网企业仍然把取得“同意”作为处理用户数据、提供互联网服务的重要依据。
Google在提供个性化广告变现服务时,要求下游发布方就其采集和使用用户数据,需要取得用户明确的“同意”。为了支持下游发布方更好的履行它的规定,Google提供了Consent SDK。
本文将以Google提供的Consent SDK(以下简称“Consent SDK”)为范例,从产品逻辑和技术实现路径上讨论Google是如何设计并取得用户的“同意”。
· 我们先从界面上分析Consent SDK的产品逻辑:
01
授权页
如果是欧盟用户且用户没有授权,可以调用Consent的接口打开以下画面(全屏弹窗):
此页面包含四个元素:
元素一:应用的名称和应用icon。
元素二:提示应用通过展示广告保持软件免费,并提问是否可以使用数据提供个性化广告内容。
元素三:提示用户可以查看200多个广告技术提供商以及它们对应的隐私页信息。
元素四:针对元素二的问题,给出三个不同的选项按键,分别表示:
1)同意查看个性化广告
2)同意查看非个性化广告
3)使用付费版本的应用而不是查看广告
02
点击查看广告技术提供商信息
在上面的元素三中提到用户可以点击“Learn how App and our 200 partners collect and usedata”进入展示广告技术提供商列表,点击可以展示对应提供商的隐私页信息。
如上图步骤二页面,可点击任意一个广告商的气泡框进入其对应的隐私页面(如上图步骤三);点击“How App uses your data”按键可以进入应用自身的隐私协议页面(如上图步骤四);点击“Back”键可以返回到步骤一页面。
03
点击授权按钮区域
在授权页面,禁用back按键,用户必须明确做出选择,才能继续进行后续的操作。在点击授权按钮区域,有三个选项(如下图):
· 当选择选项一“Yes, continue to see relevant ads”——同意查看个性化广告,关闭对话框。
· 当选择选项二“No, see ads that are less relevant”——同意查看非个性化广告,会出现App的挽留页面(如下图页面一)。挽留界面的文案内容包括以下几个部分:
1)声明尊重用户选择,用户可随时在设置中更改选择
2)App的隐私协议入口
3)设置“Back”与“Agree”按键
· 当选择选项三“Pay for the ad-free version”——购买无广告版本时,会跳转至Google Play界面(如下图选项三),用户可以根据需要购买App付费无广告版本。
综上分析,Consent SDK要求用户必须在给定的选项中做出选择。在保证透明度的前提下(比如用户可以仔细阅读各个广告技术提供商的隐私信息),引导用户授权“同意”或者付费。Consent SDK提供接口可以控制三个按钮的展示,如果产品没有付费版,可以控制SDK不展示付费跳转的按钮。
· 我们继续从技术的维度剖析实现上述逻辑的路径:
01
执行的总体流程
如上图,每次启动应用时,优先调用requestConsentInfoUpdate()接口,从云端获取一些基础数据。比如是否是欧盟用户、广告技术提供商信息等。然后基于上述基础数据,通过consentForm接口构建授权页。授权页是一个全屏对话框,是以webview打开的全屏可配置的表单。我们可以配置表单以向用户显示以下选项的组合:
1)同意查看个性化广告
2)同意查看非个性化广告
3)使用付费版本的应用而不是查看广告
备注:如果你觉得授权页里面的文案不合适或者不支持多语言,可以修改SDK里面提供的consentform.html文件。
02
requestConsentInfoUpdate接口
其主要作用是从云服务接口【1】获取相应的基础数据。工作流程图如下:
· 请求数据:
字段名
含义
pubs
publisherIds
必要参数
es
固定值2
必要参数
plat
平台,比如:android
必要参数
v
该sdk的版本
必要参数
debug_geo
调试信息状态
具体的值参见:
DebugGeography类
0:代表接口自己处理
1:代表欧洲用户
2:非欧洲用户
可选参数
· 请求样例:
正常请求:
https://adservice.google.com/getconfig/pubvendors?pubs=pub-XXXXXX&es=2&plat=android&v=1.0.6
调试直接当成欧洲用户请求:
https://adservice.google.com/getconfig/pubvendors?pubs=pub-XXXXXX&es=2&plat=android&v=1.0.6&debug_geo=1
· 返回数据(返回的数据是json格式):
字段名
备注
ad_network_ids
ad_network_id
company_ids
提供商的编号
publisher_consent_type
is_npa
companies
company_id
提供商的编号
company_name
提供商名称
policy_url
提供商的隐私协议地址
is_request_in_eea_or_unknown
是否是欧洲用户
·返回样例
03
ConsentForm接口
ConsentForm是用于构建授权页的关键类,通过方法:
1)withPersonalizedAdsOption()
2)withNonPersonalizedAdsOption()
3)withAdFreeOption()
可以组合出来上面产品分析的授权按钮区域的组合。它的工作流程如下:
04
isRequestLocationInEeaOrUnknown接口
该接口会返回该用户是否属于欧盟用户,但是必须要正确执行requestConsentInfoUpdate接口后,才能够真实有效,否则返回的都是false。实验证明,判断是否是欧盟用户的依据是通过IP判断的。在Google《欧盟地区用户意见征求政策》可以找到这样的描述【2】:
EEA 包括欧盟成员国、冰岛、列支敦士登和挪威。我们的广告投放行为以用户的 IP 地址为依据。
05
getConsentStatus接口
该接口返回,用户最终选择授权页的接口状态。分别为:
同意状态
定义
ConsentStatus.PERSONALIZED
用户已授予个性化广告的同意权
ConsentStatus.NON_PERSONALIZED
用户已授予非个性化广告的同意权
ConsentStatus.UNKNOWN
用户既未授予也未拒绝同意个性化或非个性化广告
以上是我们以Google产品为例,从产品和技术维度就取得用户“同意”进行的分析。
评论