RUM 配置
RUM 初始化配置
FTUnityBridge.InitRUMConfig(new RUMConfig()
{
androidAppId = "androidAppId",
iOSAppId = "iOSAppId",
sampleRate = 0.8f,
});
| 字段 |
类型 |
必须 |
说明 |
| androidAppId |
string |
是 |
对应设置 RUM appid,才会开启 RUM 的采集功能,获取 appid 方法 |
| iOSAppId |
string |
是 |
对应设置 RUM appid,才会开启 RUM 的采集功能,获取 appid 方法 |
| sampleRate |
float |
否 |
采样率,取值范围 [0,1],0 表示不采集,1 表示全采集,默认值为 1。作用域为同一 session_id 下所有 View、Action、LongTask、Error 数据 |
| sessionOnErrorSampleRate |
float |
否 |
设置错误采集率,当会话未被 sampleRate 采样时,若会话期间发生错误,可以采集到错误前 1 分钟范围的数据,默认值为 0 |
| enableNativeUserAction |
boolean |
否 |
是否进行 Native Action 追踪,Button 点击事件,默认为 false,Android 云打包不支持 |
| enableNativeUserResource |
boolean |
否 |
是否进行 Native Resource 自动追踪,默认为 false,Android 云打包不支持。iOS 端开启后会将系统 API 发起的 resource 一并采集,此时请屏蔽 iOS 端手动采集,以防止数据重复采集 |
| enableNativeUserView |
boolean |
否 |
是否进行 Native View 自动追踪,默认为 false |
| errorMonitorType |
string/array |
否 |
错误监控补充类型:all、battery、memory、cpu,默认不设置 |
| deviceMonitorType |
string/array |
否 |
页面监控补充类型:all、battery(仅 Android 支持)、memory、cpu、fps,默认不设置 |
| detectFrequency |
string |
否 |
页面监控频率:normal(默认)、frequent、rare |
| globalContext |
object |
否 |
自定义全局参数,特殊 key:track_id(用于追踪功能) |
| enableResourceHostIP |
boolean |
否 |
是否采集请求目标域名地址的 IP,只影响 enableNativeUserResource = true 的默认采集 |
| enableTrackNativeCrash |
boolean |
否 |
是否开启 Android Java Crash 和 OC/C/C++ 崩溃监测,默认为 false |
| enableTrackNativeAppANR |
boolean |
否 |
是否开启 Native ANR 监测,默认为 false |
| enableTrackNativeFreeze |
boolean |
否 |
是否进行 Native Freeze 自动追踪,默认为 false |
| nativeFreezeDurationMs |
number |
否 |
设置采集 Native Freeze 卡顿的阈值,取值范围 [100,),单位毫秒。iOS 默认 250ms,Android 默认 1000ms |
| rumDiscardStrategy |
string |
否 |
丢弃策略:discard 丢弃新数据(默认)、discardOldest 丢弃旧数据 |
| rumCacheLimitCount |
number |
否 |
本地缓存最大 RUM 条目数量限制 [10_000,),默认 100_000 |
RUM 手动埋点
Unity SDK 当前主要通过手动方法调用来实现自定义 RUM 数据采集。
Action
StartAction 与 AddAction 的使用区别
StartAction 内部会自动计算 Action 耗时,计算期间会尽量与附近发生的 Resource、LongTask、Error 数据进行关联,并设有 100 ms 频繁触发保护,建议用于用户操作类型的数据。
- 如果需要频繁调用,请使用
AddAction。通过 AddAction 上报的 Action 不会与 StartAction 发生冲突,也不会与当前的 Resource、LongTask、Error 数据进行关联。
使用方法
/// <summary>
/// 添加 Action
/// </summary>
/// <param name="actionName">action 名称</param>
/// <param name="actionType">action 类型</param>
public static void StartAction(string actionName, string actionType)
/// <summary>
/// 添加 Action
/// </summary>
/// <param name="actionName">action 名称</param>
/// <param name="actionType">action 类型</param>
/// <param name="property">附加属性参数</param>
public static void StartAction(string actionName, string actionType, Dictionary<string, object> property)
/// <summary>
/// 添加 Action
/// </summary>
/// <param name="actionName">action 名称</param>
/// <param name="actionType">action 类型</param>
public static void AddAction(string actionName, string actionType)
/// <summary>
/// 添加 Action
/// </summary>
/// <param name="actionName">action 名称</param>
/// <param name="actionType">action 类型</param>
/// <param name="property">附加属性参数</param>
public static void AddAction(string actionName, string actionType, Dictionary<string, object> property)
代码示例
FTUnityBridge.StartAction("click", "test");
View
使用方法
/// <summary>
/// View 开始
/// </summary>
/// <param name="viewName">当前页面名称</param>
public static void StartView(string viewName)
/// <summary>
/// View 开始
/// </summary>
/// <param name="viewName">当前页面名称</param>
/// <param name="property">附加属性参数</param>
public static void StartView(string viewName, Dictionary<string, object> property)
/// <summary>
/// View 结束
/// </summary>
public static void StopView()
/// <summary>
/// View 结束
/// </summary>
/// <param name="property">附加属性参数</param>
public static void StopView(Dictionary<string, object> property)
代码示例
FTUnityBridge.StartView("TEST_VIEW_ONE");
FTUnityBridge.StopView();
Resource
使用方法
/// <summary>
/// resource 开始
/// </summary>
/// <param name="resourceId">资源 Id</param>
public static async Task StartResource(string resourceId)
/// <summary>
/// resource 开始
/// </summary>
/// <param name="resourceId">资源 Id</param>
/// <param name="property">附加属性参数</param>
public static async Task StartResource(string resourceId, Dictionary<string, object> property)
/// <summary>
/// resource 结束
/// </summary>
/// <param name="resourceId">资源 Id</param>
public static async Task StopResource(string resourceId)
/// <summary>
/// resource 结束
/// </summary>
/// <param name="resourceId">资源 Id</param>
/// <param name="property">附加属性参数</param>
public static async Task StopResource(string resourceId, Dictionary<string, object> property)
/// <summary>
/// 添加网络传输内容和指标
/// </summary>
/// <param name="resourceId">资源 Id</param>
/// <param name="resourceParams">数据传输内容</param>
public static async Task AddResource(string resourceId, ResourceParams resourceParams)
ResourceParams
| 方法名 |
类型 |
必须 |
说明 |
| url |
string |
是 |
url 地址 |
| requestHeader |
string |
否 |
请求头参数,没有格式限制 |
| responseHeader |
string |
否 |
响应头参数,没有格式限制 |
| responseConnection |
string |
否 |
响应 connection |
| responseContentType |
string |
否 |
响应 ContentType |
| responseContentEncoding |
string |
否 |
响应 ContentEncoding |
| resourceMethod |
string |
否 |
请求方法 GET、POST 等 |
| responseBody |
string |
否 |
返回 body 内容 |
代码示例
FTUnityBridge.StartResource(resourceId);
FTUnityBridge.StopResource(resourceId);
ResourceParams resourceParams = new ResourceParams();
resourceParams.url = url;
resourceParams.requestHeader = client.DefaultRequestHeaders.ToDictionary(header => header.Key, header => string.Join(",", header.Value));
resourceParams.responseHeader = response.Headers.ToDictionary(header => header.Key, header => string.Join(",", header.Value));
resourceParams.resourceStatus = (int)response.StatusCode;
resourceParams.responseBody = responseData;
resourceParams.resourceMethod = "GET";
FTUnityBridge.AddResource(resourceId, resourceParams);
Error
使用方法
/// <summary>
/// 添加错误信息
/// </summary>
/// <param name="log">日志</param>
/// <param name="message">消息</param>
public static async Task AddError(string log, string message)
/// <summary>
/// 添加错误信息
/// </summary>
/// <param name="log">日志</param>
/// <param name="message">消息</param>
/// <param name="property">附加属性参数</param>
public static async Task AddError(string log, string message, Dictionary<string, object> property)
代码示例
void OnEnable()
{
Application.logMessageReceived += LogCallBack;
}
void OnDisable()
{
Application.logMessageReceived -= LogCallBack;
}
void LogCallBack(string condition, string stackTrace, LogType type)
{
if (type == LogType.Exception)
{
FTUnityBridge.AddError(stackTrace, condition);
}
}
LongTask
使用方法
/// <summary>
/// 添加长耗时任务
/// </summary>
/// <param name="log">日志内容</param>
/// <param name="duration">持续时间,纳秒</param>
public static async Task AddLongTask(string log, long duration)
/// <summary>
/// 添加长耗时任务
/// </summary>
/// <param name="log">日志内容</param>
/// <param name="duration">持续时间,纳秒</param>
/// <param name="property">附加属性参数</param>
public static async Task AddLongTask(string log, long duration, Dictionary<string, object> property)
代码示例
FTUnityBridge.AddLongTask("long task test", 100002);
相关专题