APUS研究院-GDPR實戰指南六:Google的開源Consent解決方案解析_風聞
APUS-麒麟合盛(APUS),中国互联网出海领航者2018-07-16 10:54

如我們之前介紹,一方面,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】獲取相應的基礎數據。工作流程圖如下:

· 請求數據:

· 請求樣例:
正常請求:
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格式):

· 返回樣例

03 ConsentForm接口
ConsentForm是用於構建授權頁的關鍵類,通過方法:
1)withPersonalizedAdsOption()
2)withNonPersonalizedAdsOption()
3)withAdFreeOption()
可以組合出來上面產品分析的授權按鈕區域的組合。它的工作流程如下:

04 isRequestLocationInEeaOrUnknown接口
該接口會返回該用户是否屬於歐盟用户,但是必須要正確執行requestConsentInfoUpdate接口後,才能夠真實有效,否則返回的都是false。實驗證明,判斷是否是歐盟用户的依據是通過IP判斷的。在Google《歐盟地區用户意見徵求政策》可以找到這樣的描述【2】:
EEA 包括歐盟成員國、冰島、列支敦士登和挪威。我們的廣告投放行為以用户的 IP 地址為依據。
05 getConsentStatus接口
該接口返回,用户最終選擇授權頁的接口狀態。分別為:

以上是我們以Google產品為例,從產品和技術維度就取得用户“同意”進行的分析。這個Consent SDK是一個開源項目,如果大家有興趣想進一步的學習和研究,可以參考以下資料:
官方資料:
https://developers.google.com/admob/android/eu-consent;
所有的開源代碼:
https://github.com/googleads/googleads-consent-sdk-android
【註釋】:
[1] https://adservice.google.com/getconfig/pubvendors
[2] https://support.google.com/dfp_premium/answer/7673898#ads
【參考資料】:
https://support.google.com/dfp_premium/answer/7673898#ads
https://support.google.com/admob/answer/7666519#providers
https://developers.google.com/admob/android/eu-consent
· APUS研究院,致力於研究數據合規的前沿問題,持續跟進高新行業的合規熱點和動態
