跳到主要内容

自定义字段分析及展示功能


1 概述

在支持自定义字段上报的同时,crashsight支持对指定字段的实时统计和图形化展示。上报时按规范格式说明字段的类型(当前支持数值类型,字符串类型和行为序列类型),此字段就可以在页面上“自定义管理页签”中进行选择,并支持实时饼图,直方图等实时统计。 Web端使用示例如下图所示:

行为序列数据的最大公共序列推荐配置
在自定义分析页签中,配置需要进行计算的序列字段

配置后,会Top20的问题进行自动统计和展示。对于其他的问题支持手动进行计算,手动计算会默认拉取最近1000条崩溃,进行计算。计算时间与序列大小本身相关,在数秒至数十秒不等。

2 SDK端接口调用说明

Android:

CrashReport.putUserData(Context c, String key, String value)

iOS:

+(void)SetUserValue: (nonnull NSString*) value forKey: (nonnull NSString*)key

Windows:

void CS_SetUserValue(const char *key, const char *value)

自定义字段的value不可带有英文冒号和分号,否则可能造成解析失败。

3 数据格式说明

需对要统计的字段指定数据类型。指定了类型的字段,后台就会进行相应处理,而类型也决定了统计和展示的方式。目前支持的数据格式有数值、字符串、行为序列三种。

3.1 通过接口传入带格式的自定义字段

Unity和UE插件中提供了不同格式的自定义字段接口重载(需要SDK版本4.3.2及以上,4.3.2以下的版本请参考3.2中的方法手动设置字段类型)。

Unity接口:

// 数值类型的自定义数据
public static void SetUserValue(string key, int value)

// 字符串类型的自定义数据
public static void SetUserValue(string key, string value)

// 行为序列类型的自定义数据
public static void SetUserValue(string key, string[] value)

UE接口:

// 数值类型的自定义数据
static void SetUserValue(const char* key, int value);

// 字符串类型的自定义数据
static void SetUserValue(const char* key, const char* value);

// 行为序列类型的自定义数据
static void SetUserValue(const char* key, const char** values, int count);

3.2 如何手动指定自定义字段的数据格式?

字段类型指定的方式,是复用了原有Key字段。新增一个类型字段(I表示数值,K表示字符串,S表示行为序列数据)组合在Key之前,以#进行分隔。例如:
数值类型的自定义数据上报

Key:I#key

Value:100

字符串类型的自定义数据上报:

Key:K#key2

Value:lobby

行为序列类型的自定义上报

Key:S#key3

Value:action1#action2#action3#action4#action5#action6

行为序列类型的数据用#进行拼接,后台会自动进行拆分,挖掘输出最大公共序列,方便问题复现。

指定类型的数据,在处理链中会进行额外处理,支持页面选择和实时统计,如未加类型的数据,则默认不进行更多的处理。

采用手动指定数据格式的方式时,请调用以下接口传入自定义数据。

Unity接口:

public static void AddSceneData(string key, string value)

UE接口:

static void AddSceneData(const char* key, const char* value);