Unity3D:Unity Analytics 和 PIPL
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
Unity Analytics 和 PIPL
中国全国人民代表大会通过了《个人信息保护法》(PIPL),以保护中国公民的数据隐私。它从 1 年 2021 月 <> 日开始生效,并要求中国的玩家同意他们的数据被处理,并选择加入同意他们的数据传输到中国境外。
为了遵守此法规,Unity 必须阻止从中国玩家那里收集数据,直到他们同意这两种选择加入。这意味着从 1 年 2021 月 <> 日起,来自中国玩家的数据将停止处理。依赖数据的分析报告和玩家参与系统将不适用于中国的玩家。
分析数据隐私插件包含相关功能,用于传达玩家对两种选择加入的同意。作为开发人员,您需要将数据隐私插件添加到游戏中,并参考 Unity 隐私政策,以便使用同意流程。一旦同意流程到位,选择加入的中国玩家的数据收集将恢复。
Unity 分析数据隐私插件
Unity 分析数据隐私插件可让您的玩家控制 SDK 的数据收集。此插件是 Unity 分析库包的一部分。可以使用 Unity 编辑器(>包管理器窗口)中的包管理器仔细检查项目中是否启用了包。
该插件不支持以下平台:
- Linux目录
- Windows Phone
- 提岑
- 苹果电视
- 黑莓
注意:对于 2018.3 之前的 Unity 版本,您必须使用 Unity 资源商店中的 Unity 分析数据隐私资源包。资源商店版本可与 Unity 4.7、5.1+、2017.1+、2018.1 和 2018.2 一起使用。
向玩家呈现同意流
数据隐私插件包括一个 Unity UI 按钮预制件,您可以将其放置在用户界面的合适位置。当玩家单击此按钮时,它会在 Web 浏览器中打开玩家数据隐私页面,玩家可以在其中选择加入以下同意:
1. Consent to collect data for analytics.
2. Consent to transfer data outside of mainland China.
开发人员还可以提供自己的用户界面,并使用数据隐私 API 打开玩家数据隐私页面。
重要提示:如果玩家启用了浏览器弹出窗口阻止程序,则其浏览器可能会阻止打开数据隐私页面。一些浏览器会注意到某个页面已被阻止,但其他浏览器根本不提供任何通知。请考虑在用户界面中添加一条消息,警告玩家弹出窗口阻止程序可能会阻止页面打开。
实现 Unity 解决方案
要实现数据隐私插件提供的 UI 按钮,请执行以下操作:
- 如果场景中还没有画布游戏对象,则需要添加一个。当您添加画布时,Unity 会自动添加事件系统。
- 将 DataPrivacyButton 预制件从“项目”窗口(在文件夹中)拖动到场景中的画布游戏对象。
Packages/Analytics Library/DataPrivacy
- 根据需要调整按钮的位置、图形和文本。
- 该按钮已连接到数据隐私API,因此当位于中国的玩家单击该按钮时,该玩家的个人数据管理页面将在Web浏览器中打开。
注意:文件夹下的按钮预制件版本是只读的。您可以对 Scene 层次结构中的按钮实例进行更改,但不能将这些更改保存回原始预制件。Packages
实施自定义解决方案
如果您使用自定义界面按钮,则可以请求用户的数据选择加入页面的网址,然后在浏览器或 Web 视图中打开该网址:
- 创建一个 UI 组件,通知玩家他们能够选择加入数据收集和传输。请注意,数据隐私插件在文件夹中包含一个图标。Unity 鼓励您在数据隐私提示上使用此图标,为在 Unity 游戏中遇到数据隐私控制的玩家提供一致的视觉提示。
Packages/Analytics Library/DataPrivacy
- 当玩家选择加入或退出时,调用该方法。这将采用在网络请求完成时调用的对象。您可以选择传入第二个函数来处理网络请求失败的情况。
DataPrivacy.FetchPrivacyUrl()Action<string>Action<string>
- 在请求的处理程序中,使用该方法在浏览器中打开 URL。
FetchPrivacyUrl()Application.OpenURL()
例如,以下脚本将打开 Player Data Privacy 页面来响应对游戏对象的单击:
using System;
using UnityEngine;
using UnityEngine.Analytics;
public class OptOutHandler : MonoBehaviour {
static void OnFailure(string reason)
{
Debug.LogWarning(String.Format("Failed to get data privacy page URL: {0}", reason));
}
void OnURLReceived(string url)
{
Application.OpenURL(url);
}
public void OpenDataURL()
{
DataPrivacy.FetchPrivacyUrl(OnURLReceived, OnFailure);
}
void OnMouseOver(){
if(Input.GetMouseButtonUp(0)){
OpenDataURL();
}
}
}
由3D建模学习工作室整理翻译,转载请注明出处!