欧盟用户广告隐私功能
为了保护用户的数据隐私并实现市场更公平的竞争,欧盟于2022年11月正式实施 Digital Markets Act(DMA)。为符合 DMA 规定,对于 DMA 所涵盖的欧盟用户,需将 Google 的 Consent Management Platform(CMP)接入于 Player Network SDK 中。
INTLConfig 中开启 CMP 的配置
以下为 INTLConfig.ini
中开启 CMP 的推荐配置,其中不建议改动 ANALYTICS_CONSENT_REQUIRED_TYPE
与 ANALYTICS_CONSENT_DEFAULT_CONFIG
,如需修改请先联系 Google 商务确认相关权限的政策。
[Analytics]
ANALYTICS_CONSENT_ENABLE = 1
ANALYTICS_CONSENT_CHANNEL = Firebase
ANALYTICS_CONSENT_REQUIRED_TYPE = ad_user_data,ad_personalization
ANALYTICS_CONSENT_DEFAULT_CONFIG = ad_storage:1,analytics_storage:1,ad_user_data:0,ad_personalization:0
ANALYTICS_CONSENT_ENABLE
:Consent Mode 功能是否开启。1
:开启 CMP,根据 IP 预判断玩家是否为欧盟用户,并设置 Google Consent Mode。0
:关闭 CMP,将配置的 Google Consent Mode 权限默认设置为同意,此时游戏需处理相关逻辑,比如关闭隐私确认弹框功能。
ANALYTICS_CONSENT_CHANNEL
:Consent Mode 功能生效的渠道,支持 Firebase。ANALYTICS_CONSENT_REQUIRED_TYPE
:Consent Mode 功能必须处理的权限类型,支持的权限类型包括:ad_storage
:启用与广告相关的存储机制analytics_storage
:启用与分析相关的存储机制,例如设备标识符存储ad_user_data
:就在线广告目的发送用户数据征求用户意见ad_personalization
:设置有关个性化广告的用户同意情况
ANALYTICS_CONSENT_DEFAULT_CONFIG
:Consent Mode 功能开启时各个权限的默认配置,Player Network SDK 进行默认设置时读取的配置。1
:用户同意权限类型0
:用户拒绝权限类型
设置 Consent Mode
当开启欧盟用户广告隐私功能,每次启动游戏都需要调用 SetConsent
接口。
根据用户返回的信息,调用 Unity SDK 或 Unreal Engine SDK 的 SetConsent
接口来设置同意协议的情况。
- Unity
- Unreal Engine
INTLAPI.SetConsent(kConsentStatusGranted);
UINTLSDKAPI::SetConsent(kConsentStatusGranted);
流程逻辑图
- 虚线框内逻辑游戏需要处理。
- 读取默认配置进行设置:读取
ANALYTICS_CONSENT_DEFAULT_CONFIG
中配置的默认值,在启动游戏时进行设置。 - Set(Granted)/Set(Denied):调用 Unity SDK 或 Unreal Engine SDK 的
SetConsent
接口来更新用户同意情况- Set(Granted):传入参数
kConsentStatusGranted
,为同意 - Set(Denied):传入参数
kConsentStatusDenied
,为拒绝
- Set(Granted):传入参数
验证 Consent Mode
Consent Mode 功能可通过日志进行验证:
在 INTLConfig.ini 中设置
LOG_LEVEL = 1
(信息)或LOG_LEVEL = 0
(调试)。在日志中搜索关键字,以最后一条为准,查看是否符合配置的
ANALYTICS_CONSENT_REQUIRED_TYPE
:Android 平台关键字与示例:
FirebaseAnalytics setConsent:
FirebaseAnalytics setConsent: consentMap = {AD_USER_DATA=GRANTED, AD_PERSONALIZATION=GRANTED}
iOS 平台关键字与示例:
Firebase: set consent:
Firebase: set consent: {
"ad_personalization" = granted;
"ad_user_data" = granted;}
修改 CMP 默认配置
不建议改动 ANALYTICS_CONSENT_DEFAULT_CONFIG
配置,如需修改请先联系 Google 商务确认相关权限的政策。
Player Network SDK 初始化未完成时,Firebase 会读取 XML(Android)/Plist(iOS) 文件中的配置以设置 CMP。应确保 XML/Plist 中对应权限配置与 ANALYTICS_CONSENT_DEFAULT_CONFIG
中一致。
Android 平台配置
- Unity
- Unreal Engine
<meta-data android:name="google_analytics_default_allow_analytics_storage" android:value="true" />
<meta-data android:name="google_analytics_default_allow_ad_storage" android:value="true" />
<meta-data android:name="google_analytics_default_allow_ad_user_data" android:value="false" />
<meta-data android:name="google_analytics_default_allow_ad_personalization_signals" android:value="false" />
由于上述配置存在于 INTLFirebase.aar
而无法直接修改,需在 Unity 引擎项目里的 AndroidManifest.xml
文件中使用 tools:replace
替换权限对应的 android:value
,以拒绝 ad_storage
权限为例:
<meta-data android:name="google_analytics_default_allow_ad_storage" android:value="false" tools:replace="android:value"/>
<meta-data android:name="google_analytics_default_allow_analytics_storage" android:value="true" />
<meta-data android:name="google_analytics_default_allow_ad_storage" android:value="true" />
<meta-data android:name="google_analytics_default_allow_ad_user_data" android:value="false" />
<meta-data android:name="google_analytics_default_allow_ad_personalization_signals" android:value="false" />
由于上述配置存在于 INTLFirebase.aar
而无法直接修改,需在 Unreal Engine 项目里的 INTLFirebase_APL.xml
文件中 root
节点下添加 addElements
标签,使用 tools:replace
替换权限对应的 android:value
,以拒绝 ad_storage
权限为例:
<addElements tag="application">
<meta-data android:name="google_analytics_default_allow_ad_storage" android:value="false" tools:replace="android:value"/>
</addElements>
iOS 平台配置
- Unity
- Unreal Engine
"GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE":true,
"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE":true,
"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA":false,
"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS":false,
在 INTLFirebaseKit.projmods
文件中,找到 Info.plist
节点,修改对应权限,以拒绝 ad_storage
权限为例:
"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE":false,
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE</key>
<true/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE</key>
<true/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA</key>
<false/>
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS</key>
<false/>
在 INTLFirebase.plist
文件中,修改对应权限,以拒绝 ad_storage
权限为例:
<key>GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE</key>
<false/>