PIPL 合规性

重要提示:UGS Analytics 要求您实现独立于 Unity Ads 的隐私解决方案。因此,如果您同时使用 Unity Ads 和 UGS Analytics,则 Unity Ads 的选择退出机制不会同时适用于这两种服务。

重要提示:以下指南与 SDK 版本 4.4.2 及更低版本相关。建议尽快升级到版本 5.0.0。如需更多信息,请参阅迁移指南

中国新的数据隐私法《个人信息保护法》于 2021 年 11 月 1 日生效。个人信息是指可以识别个人身份(例如姓名或地址)并以电子或其他方式存储的数据。敏感的个人信息是指生物特征、性别认同、宗教信仰、病史、财务状况以及十四周岁以下未成年人的任何个人信息。

PIPL(《个人信息保护法》)是一项基于“未明确同意就是拒绝”原则的法规,无论分析是否侵犯隐私,都需要玩家明确同意后才能收集他们的数据并将他们的数据传输到中国境外。作为一项 Analytics 服务,我们提供地理位置 API 调用,以确定用户当前是否位于中国境内,如果是,您必须请求用户同意。如果用户同意,您可以设置一个标志来启用其数据收集。

旧版 SDK(低于 3.0 版)不再严格根据地理位置从受影响区域的用户那里收集数据。聚合的历史数据不会丢失,但如果您在这些区域有玩家,您会看到核心指标(如 DAU)下降。

版本 3.0 及更高版本为开发者提供了将适当的同意标志传递给 Analytics 包的函数,以便玩家选择同意数据收集。

注意:如果使用的是 REST API,请参阅发送 PIPL 同意状态

PIPL 同意

PIPL 是一项基于“未明确同意就是拒绝”原则的法规。与 GDPR 和 CCPA 类似,对于 PIPL 法规,您仍然需要 CheckForRequiredConsents。您需要添加 if 语句,如下所示:

string consentIdentifier;
bool isOptInConsentRequired;
async void Start()
   {
       try
       {
           await UnityServices.InitializeAsync();
           List<string> consentIdentifiers = await AnalyticsService.Instance.CheckForRequiredConsents();
           if (consentIdentifiers.Count > 0)
           {
               consentIdentifier = consentIdentifiers[0];
               isOptInConsentRequired = consentIdentifier == "pipl";
           }
       }
       catch (ConsentCheckException e)
       {
           // Something went wrong when checking the GeoIP, check the e.Reason and handle appropriately
       }
   }

如果以 PIPL 的形式返回值,此函数将返回包含单个字符串标识符“pipl”的列表。

然后,您需要先征得用户的同意,然后才能在 SDK 中触发任何其他操作。使用 ProvideOptInConsent 方法可以授予或拒绝同意,如下所示:

public void CheckUserConsent()
   {
       try
       {
           if (isOptInConsentRequired)
           {
               // Show a PIPL consent flow
               // ...

               // If consent is provided for both use and export
               AnalyticsService.Instance.ProvideOptInConsent(consentIdentifier, true);

               // If consent is not provided
               AnalyticsService.Instance.ProvideOptInConsent(consentIdentifier, false);
           }
       }
       catch (ConsentCheckException e)
       {
           // Handle the exception by checking e.Reason
       }
   }
}

请访问 Unity 的法务站点以了解有关 Unity 的 PIPL 方法的更多信息。

选择退出

如果用户以后想选择退出,可以通过 public void OptOut() 对所有适用法规使用相同的方法。

bool consentHasBeenChecked;
public void OptOut()
    {
        try
        {
            if (!consentHasBeenChecked)
            {
                // Show a GDPR/COPPA/other opt-out consent flow
                // If a user opts out
                AnalyticsService.Instance.OptOut();
             }
             // Record that we have checked a user's consent, so we don't repeat the flow unnecessarily.
             // In a real game, use PlayerPrefs or an equivalent to persist this state between sessions
            consentHasBeenChecked = true;
        }
        catch (ConsentCheckException e)
        {
            // Handle the exception by checking e.Reason
        }
  }

隐私 URL

您还需要向用户展示隐私 URL。

要获取隐私 URL,请使用:Application.OpenURL(AnalyticsService.Instance.PrivacyUrl);

选择再次加入

要选择再次加入,有三种方法:

  1. 删除 PlayerPrefs 并重新启动应用程序。
  2. 清除应用程序的所有数据和缓存。
  3. 卸载应用程序并重新安装。

注意:如果 geoIP 调用返回了 PIPL,则 SDK 将保持休眠状态,直到提供显式的选择加入选项。只有 PIPL 才会将其传达给终端用户。其他法规在内部被接受,并假设是“默认选择加入、明确选择退出”的情况。