Legacy Analytics(旧版 Analytics)
Analytics 事件限制
为了确保服务高效且响应迅速,Analytics 对游戏或应用程序具体实例可以发送的标准事件和自定义事件数量施加了限制。这些限制包括:
- 每小时限制为 100 个事件(每个游戏实例)。
- 每个事件限制为 10 个参数。
- 单个事件中发送的数据限制为 500 个字节或字符,包括参数名称的字符串长度和参数值的字节大小或字符串长度。
- 自定义事件的名称限制为 100 个字符。
- Analytics Dashboard 仅显示给定日期的 5,000 个最常见事件、参数、参数值组合(对于可分类的参数值)。
发送事件的所有 AnalyticsEvent 函数都会从 AnalyticsResult 枚举返回一个值。如果应用程序超出其中任何一个限制,则 AnalyticsResult 值都将标识遇到特定错误:
AnalyticsResult | LimitExceeded |
---|---|
AnalyticsResult.TooManyRequests | 每小时限制为 100 个事件 |
AnalyticsResult.TooManyItems | 每个事件限制为 10 个参数 |
AnalyticsResult.SizeLimitReached | 事件名称限制为 500 个数据字节或 100 个字符 |
注意:每个实例 100 个事件的限制是适合大多数 Unity Analytics 用户的默认值。如果您需要为游戏或应用程序设置更高的事件数量限制,请与 Analytics 支持团队联系以制定符合您要求的限制。
单个事件的数据限制
在单个自定义事件或标准事件中,最多可以发送 500 个字符或数据字节。此限制会计算所有参数名称的组合字符串长度以及以下参数值大小(取决于数据类型):
C# 数据类型 | 大小 |
---|---|
byte、ubyte | 1 |
short、ushort | 4(转换为 int) |
Int、uint | 4 |
long、ulong | 8 |
浮点 | 8(转换为 double) |
double | 8 |
decimal | 8(转换为 double) |
字符串 | 字符串长度 |
object | 调用 ToString() 后的字符串长度 |
COPPA
COPPA 是指美国的《儿童网络隐私保护法》(及相关法规)。COPPA 指明了“面向 13 岁以下儿童”的应用程序(“儿童应用程序”)运营商的某些义务。如果您对自己的应用程序是否为儿童应用程序或 COPPA 的其他方面有疑问,您应该参考美国联邦贸易委员会提供的材料(部分内容可在此处查看:COPPA 常见问题解答),并咨询您自己的法律顾问。
如果您的应用程序已定位为儿童应用程序,则 Unity Analytics 从其中收集数据的方式将不同于其他应用程序。对于儿童应用程序,您需要在编辑器服务面板中将该应用程序定位为儿童应用程序,或者通过 Unity Ads 发行商后台中的项目创建过程或通过 Unity Ads 发行商后台中的 Project Overview(项目概况)页面进行此操作。
为了提供游戏分析数据,Unity Analytics 会为游戏中的每个用户生成一个匿名用户 ID。我们不会使用从儿童应用程序生成的任何这些 ID 在其他开发者构建的应用程序之间跟踪用户,也不会在不同服务之间、设备之间或同一台计算机上的浏览器之间映射用户。除了这些 ID 之外,Unity Analytics 还会从儿童应用程序用户那里收集以下个人信息:IP 地址、广告主标识符(仅当同时启用 Unity Ads 时才会收集 IDFA)和设备标识符(IDFV、Android 设备 ID,当 Android 设备 ID 不可用时为 IMEI)。
Unity 对上述个人信息的使用仅限于为应用程序开发者提供应用级分析,以及分析和报告有关设备、应用和游戏行业的匿名聚合级信息(例如,使用特定操作系统的设备百分比或按区域细分的特定设备百分比)。此聚合级数据不包含任何个人信息。此外,如果您在儿童应用程序中启用了 Unity Ads,Unity 可能会根据 Unity Analytics 从该儿童应用程序中收集的用户信息在该儿童应用程序中投放内容相关广告。
GDPR
《一般数据保护条例》(General Data Protection Regulation, GDPR) 是欧盟关于规范欧盟公民数据隐私的法律。
- 如需更多有关欧盟 GDPR 的信息,请参阅 https://www.eugdpr.org
- 如需有关 Unity 和 GDPR 的信息,请参阅 https://unity3d.com/legal/gdpr
- 如需了解有关 Unity 自己的隐私政策,请参阅 https://unity3d.com/legal/privacy-policy
在使用 Unity Analytics 时,确保满足 GDPR 合规性是一项共同的责任。Unity 会收集数据以帮助您改善玩家的广告和游戏体验,其中一些数据包括受到 GDPR 监管的个人身份信息 (PII)。Unity 提供了一些工具,按照 GDPR 的要求允许玩家选择退出 PII 收集,并管理 Unity 收集的玩家个人数据。您的责任包括向应用添加选择退出按钮,以及在您自己的隐私政策中提供指向 Unity 隐私政策的链接。
当您的应用使用 Unity Ads 时,Unity 会在玩家手机上首次展示广告时向玩家显示通知,让他们可以选择同意或不同意个人身份信息收集。后续广告也会显示一个按钮,让用户可以使用该按钮来管理其数据隐私选项。如需有关 GDPR 和 Unity Ads SDK 的更多信息,请参阅 GDPR 合规性。
如果您同时使用 Unity Ads 和 Analytics,则 Unity Ads 的选择退出机制适用于这两种服务。
如果您不使用 Unity Ads,但使用其他 Unity 服务,例如 Unity Analytics、IAP、Multiplayer 或 Performance Reporting,则必须使用 Unity Analytics Data Privacy 插件为您的玩家提供选择退出选项。该插件提供了一个可以添加到游戏中的按钮。该按钮将打开一个 Unity 网页,让玩家可以在其中管理其隐私设置。玩家可以按照每款游戏、每台设备的方式管理他们的偏好设置。Unity Analytics 不会跟踪同一玩家是否玩了多款使用 Unity 制作的游戏,或者在多台设备上玩同一款游戏。
上述选项涵盖了 Unity 为自定义广告和玩家服务收集的所有数据。但是,如果您自行收集个人身份信息数据,您有责任保护和管理这些数据。
最佳实践:
- 以您自己的法律意见为主。本文档中的所有内容均不应被解释为法律意见。
- 阅读并理解数据处理附录 (DPA)。
- 在您的隐私政策中将 Unity 列为收集数据的第三方,并在您的隐私政策中包含指向 Unity 隐私政策的链接。
- 请勿在标准事件或自定义事件中向 Unity Analytics 发送个人身份信息。
- 请勿使用
Analytics.SetUserGender()
或Analytics.SetUserBirthYear()
向 Unity Analytics 发送性别和年龄信息。这些 API 已弃用。
Unity Analytics Data Privacy 插件
如果不使用 Unity Ads,则必须使用 Unity Analytics Data Privacy 插件让玩家控制 Unity Analytics 数据收集。
Data Privacy 插件是 Unity Analytics Library 包的一部分。您可以使用 Unity Package Manager(包管理器)(菜单:Window(窗口)> Package Manager(包管理器))仔细检查是否在项目中启用了该包。
该插件不支持以下平台:
- Linux
- Windows Phone
- Tizen
- Apple TV
- Blackberry
Unity Analytics 服务会自动删除从这些平台上运行的游戏发送的个人身份信息。如有疑问,请联系 DPO@unity3d.com。
如果您的游戏显示来自 Unity 广告网络的广告,则表示 Unity Ads SDK 已向玩家显示数据收集的选择退出选项,并根据玩家的数据隐私选择结果配置 Unity Analytics。只有在不使用 Unity Ads 服务时,才需要使用 Unity Analytics Data Privacy 插件。
注意:对于 2018.3 之前的 Unity 版本,必须使用 Unity Asset Store(资源商店)中的 Unity Analytics Data Privacy Asset Store 包。此 Asset Store 版本可用于 Unity 4.7、5.1+、2017.1+、2018.1 和 2018.2。
向玩家显示退出选项
Data Privacy 插件有一个 Unity UI 按钮预制件可用于放置在用户界面的合适位置。当玩家单击此按钮时,会在 Web 浏览器中打开 Player Data Privacy(玩家数据隐私)页面。玩家可以在此页面上选择退出 Unity 的数据收集,也可以查看 Unity 过去收集的数据。您还可以提供自己的用户界面,并使用 API 打开 Player Data Privacy(玩家数据隐私)页面。
重要:如果玩家启用了浏览器弹出窗口阻止程序,则其浏览器可以阻止打开数据隐私页面。有些浏览器会提示某个页面已被阻止,但其他浏览器根本没有提供任何提示。因此,应考虑在您的用户界面中添加一条消息,告知玩家弹出窗口阻止程序可能会阻止打开页面。
方法 1:使用 Unity UI
- 在添加 Canvas 游戏对象时,Unity 会自动添加一个 EventSystem。
- 将 DataPrivacyButton 预制件拖到场景中的 Canvas 游戏对象上。在 Project(项目)窗口的 Packages/Analytics Library/DataPrivacy 文件夹中可以找到该预制件。
- 根据需要调整按钮的位置、图形和文本。
- 按钮已连接到 Data Privacy API,因此在玩家单击按钮时会打开玩家的个人数据管理页面。此页面将在 Web 浏览器中打开。
注意:位于 **Packages(包)**文件夹下的按钮预制件版本是只读的。您可以在 **Scene(场景)**层级视图中更改按钮实例,但无法将这些更改保存回原始预制件。
方法 2:使用您自己的 UI
要使用您自己的用户界面创建该按钮,您可以请求用户数据选择退出页面的 URL,然后在浏览器或 Web 视图中打开该 URL:
- 创建您自己的 UI 控件,告知玩家可以选择退出数据收集。注意:Data Privacy 插件在 Packages/Analytics Library/DataPrivacy 文件夹中包含一个图标。Unity 鼓励您在 Data Privacy 按钮(或类似控件)上使用此图标,从而给在 Unity 游戏中遇到数据隐私控件的玩家提供一致的图形提示。
- 为了响应玩家对此控件的单击操作或与此控件的交互,调用
DataPrivacy.FetchPrivacyUrl()
函数。此函数接受在网络请求完成时调用的Action<string>
对象。您还可以选择传入第二个Action<string>
函数来处理网络请求失败的情况。 - 在
FetchPrivacyUrl()
请求的处理程序中,请使用Application.OpenURL()
在浏览器中打开收到的 URL。
例如,以下脚本将打开 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();
}
}
}
PIPL
DataPrivacy
类根据玩家的数据隐私管理选择情况来配置 Unity Analytics 服务。
命名空间:UnityEngine.Analytics
public class DataPrivacy
DataPrivacy
类会自动获取玩家的数据隐私状态,并相应地配置 Analytics 服务。
使用 FetchPrivacyUrl()
函数可以获取玩家个人数据管理页面的 URL。打开该 URL 可以让玩家选择管理其数据隐私设置。
此页面详细介绍了以下函数:
- Initialize() - 准备 Data Privacy API 以供使用(适用于 Unity 5.1 或更低版本)。
- FetchPrivacyUrl(Action, Action) - 获取玩家的个人数据管理页的 URL。
Initialize()
准备 Data Privacy API 以供使用。
声明
public static void Initialize()
详细信息
此函数创建一个隐藏的游戏对象,并将 DataPrivacy
类的一个实例作为组件添加到该游戏对象。
在 Unity 5.1 或更低版本中,请在应用程序启动的早期调用 Initialize()
,理想情况下,应在调用 UnityAnalytics.StartSDK (projectId)
后立即进行此调用。更高版本的 Unity 会自动调用 Initialize()
。
FetchPrivacyUrl(Action, Action)
获取玩家个人数据管理页面的 URL。
声明
public static void FetchPrivacyUrl(Action<string> success, Action<string> failure = null)
参数
Action<String>
success - 成功获取 URL 后要调用的 Action 对象。传递给 Action 的字符串包含 URL。- [可选]
Action<String> failure
- Unity 无法获取 URL 时要调用的 Action 对象。传递给 Action 的字符串包含失败原因。
详细信息
在浏览器或 Web 视图中打开传递给 success
函数的 URL,让玩家有机会管理其数据保护选项。您可以使用 Application.OpenURL()
打开页面。
该 URL 的有效期很短。因此,务必在获取 URL 之后立即打开 URL。
如果您的问题在本文档中未得到解答,请在 Unity Forums 上提问。