配置 User Reporting

User Reporting 的默认设置适合一般使用,但随着项目的发展,您可能希望根据特定需求进行更改。您可以构建与应用程序相匹配的自定义 UI 以引入自定义字段,也可以更改用户报告表单的外观。软件包中提供的示例有效,但只是为了帮助您入门。

用户报告包含多种有用的信息,比如元数据、事件、抽样指标、屏幕截图和文件附件。例如,您可以将用户的游戏存档文件附加到其报告中,或者在每次玩家执行特定操作时记录一个事件。您还可以在性能要求高的游戏场景中对性能指标进行抽样。

使用 API 可以配置报告中每种数据类型的最大值。UserReportExample 文件(位于导入到 Unity 项目中的示例内)演示了向报告添加数据的不同方式。

例如,您可以自定义以下设置,以限制报告中特定数据类型的最大值:

  • FramesPerMeasure:一个测量是指标每个收集的样本中涵盖的一组帧。默认测量长度为 60 帧。
  • MaximumMeasureCount:一个测量是指标样本中涵盖的一组帧,并计算报告中的最大测量次数。默认值为 300 次测量。
  • MaximumEventCount:此限制适用于报告中包含的事件数量。默认值为 100 个事件。
  • MaximumScreenshotCount:报告中附加的屏幕截图数量上限。默认值为 10 张屏幕截图。
  • MetricsGatheringMode:表示指标收集模式。在默认配置下,一些指标,例如每秒帧数 (Graphics.FramesPerSecond),可以通过自动模式包含在报告中。手动模式仅会在报告中包含您的自定义指标,而禁用模式将完全阻止发送报告中的任何采样指标。

以上设置没有具体限制,但如果您设置较大的值,收集到的数据会影响报告的大小,特别是较大的高分辨率屏幕截图可能会导致报告大小出现大幅增长。

要配置用户报告设置,请调用 UserReportingService.Instance..Configure(UserReportingClientConfiguration configuration) 方法:

var customConfig = new UserReportingClientConfiguration(5, 5, 100, 100, MetricsGatheringMode.Automatic);
UserReportingService.Instance.UserReporting.Configure(customConfig);

创建和发送报告

要创建报告,请调用 UserReportingService.Instance.UserReporting.CreateNewUserReport();

要发送报告,请调用 UserReportingService.Instance.SendUserReport(Action<float> progressUpdate, Action<bool> result)

请参考示例以更好地了解操作参数。尽管不是必需的,但建议发送报告。

添加元数据

使用元数据可以收集游戏特定的数据,这些数据默认会随设备元数据一起包含在用户报告中。

要添加自定义元数据,请调用 UserReportingService.Instance.AddMetadata(string name, string value) 方法。

添加元数据对性能几乎没有影响。

记录事件

要记录自定义事件,请调用 UserReportingService.Instance.LogEvent(UserReportEventLevel level, string message) 方法。

记录事件对性能几乎没有影响。

添加采样指标

要添加自定义采样指标,请调用 UserReportingService.Instance.SampleMetric(string name, double value) 方法。

SampleMetric 方法经过专门设计,使用该方法时每帧调用对性能影响很小。然而,如果您每一帧都调用此方法,每个不同的名称都会显著增加报告的大小。

添加屏幕截图

要向报告中添加屏幕截图,请调用 UserReportingService.Instance.TakeScreenshot(int maximumWidth, int maximumHeight) 方法。屏幕截图会在 Dashboard(后台)中作为报告的一部分显示。

您可以选择使用 UserReportingService.Instance.TakeScreenshot(int maximumWidth, int maximumHeight, object source) 来指定屏幕截图的来源,比如 Camera 或 RenderTexture。

不管来源如何,图像都将按比例缩小,直到适应由 maximumWidth 和 maximumHeight 参数定义的尺寸。

选择最大宽度和最大高度时,必须确保用户报告小于 10 MB。最后一张屏幕截图将作为报告缩略图显示在 Dashboard(后台)上。

注意:截取屏幕截图会对性能产生一定影响。为了避免对用户造成不良影响,请在性能关键时段之外截取屏幕截图,例如玩家处于空闲状态时。

添加附件

添加视频和场景图片等附件。

附件会以 Base64 对象的形式编码。

要添加附件,请使用 UserReportingService.Instance.AddAttachmentToReport(string title, string filename, byte[] data)

规划报告的维度

使用维度可以在 Unity Dashboard(Unity 后台)上过滤用户报告。在发送报告之前,您可以通过向维度属性添加项目来向报告中添加维度和指标。每个维度或指标都有一个名称和一个值。您可以通过调用以下方法来向报告中添加新的维度:

UserReportingService.Instance.AddDimensionValue(string dimension, string value);

例如,查看带有以下维度的三份报告:

名称
PlatformAndroid
Version2
CategoryGraphics
PlatformWindowsPlayer
Version1
LanguageEnglish
PlatformWindowsPlayer
Version1
Platform.VersionWindowsPlayer.1

查看 Dashboard(后台)上的以下过滤选项:

维度名称维度值
CategoryGraphics
LanguageEnglish
PlatformAndroid
PlatformWindowsPlayer
Platform.VersionWindowsPlayer: 1
Version1
Version2

您还可以为不同的报告添加不同的维度。例如,您可能只想在本地化报告中添加 SystemLanguage 作为一个维度。

用户还可以在报告摘要中添加单个井号标签。该井号标签会显示为一个维度。

例如,摘要“我掉到地板下了 #FloorBug”将显示为:

维度名称维度值
Hash TagFloorBug