跳到主要内容

欧盟用户广告隐私功能

AndroidiOS
支持于:Player Network SDK 1.21.03

为了保护用户的数据隐私并实现市场更公平的竞争,欧盟于2022年11月正式实施 Digital Markets Act(DMA)。为符合 DMA 规定,对于 DMA 所涵盖的欧盟用户,需将 Google 的 Consent Management Platform(CMP)接入于 Player Network SDK 中。

INTLConfig 中开启 CMP 的配置

以下为 INTLConfig.ini 中开启 CMP 的推荐配置,其中不建议改动 ANALYTICS_CONSENT_REQUIRED_TYPEANALYTICS_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:用户拒绝权限类型
警告

当开启欧盟用户广告隐私功能,每次启动游戏都需要调用 SetConsent 接口。

根据用户返回的信息,调用 Unity SDKUnreal Engine SDKSetConsent 接口来设置同意协议的情况。

INTLAPI.SetConsent(kConsentStatusGranted);

流程逻辑图

Image: CMP Logic

  • 虚线框内逻辑游戏需要处理。
  • 读取默认配置进行设置:读取 ANALYTICS_CONSENT_DEFAULT_CONFIG 中配置的默认值,在启动游戏时进行设置。
  • Set(Granted)/Set(Denied):调用 Unity SDKUnreal Engine SDKSetConsent 接口来更新用户同意情况
    • Set(Granted):传入参数 kConsentStatusGranted,为同意
    • Set(Denied):传入参数 kConsentStatusDenied,为拒绝

Consent Mode 功能可通过日志进行验证:

  1. INTLConfig.ini 中设置 LOG_LEVEL = 1(信息)或 LOG_LEVEL = 0(调试)。

  2. 在日志中搜索关键字,以最后一条为准,查看是否符合配置的 ANALYTICS_CONSENT_REQUIRED_TYPE

    1. Android 平台关键字与示例:FirebaseAnalytics setConsent:

      FirebaseAnalytics setConsent: consentMap = {AD_USER_DATA=GRANTED, AD_PERSONALIZATION=GRANTED}
    2. 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 平台配置

<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"/>

iOS 平台配置

"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,