RUM Configuration
RUM Initialization Configuration
FTUnityBridge.InitRUMConfig(new RUMConfig()
{
androidAppId = "androidAppId",
iOSAppId = "iOSAppId",
sampleRate = 0.8f,
});
| Field |
Type |
Required |
Description |
| androidAppId |
string |
Yes |
Corresponds to the RUM appid setting required to enable RUM collection. How to obtain appid |
| iOSAppId |
string |
Yes |
Corresponds to the RUM appid setting required to enable RUM collection. How to obtain appid |
| sampleRate |
float |
No |
Sample rate, value range [0,1]; 0 means no collection, 1 means full collection. Default is 1. Applies to all View, Action, LongTask, and Error data under the same session_id |
| sessionOnErrorSampleRate |
float |
No |
Sets the error sampling rate. When a session is not sampled by sampleRate, if an error occurs during the session, data from up to 1 minute before the error can be collected. Default is 0 |
| enableNativeUserAction |
boolean |
No |
Whether to enable Native Action tracking, i.e., Button click events. Default is false. Not supported with Android cloud packaging |
| enableNativeUserResource |
boolean |
No |
Whether to enable automatic Native Resource tracking. Default is false. Not supported with Android cloud packaging. When enabled on iOS, resources initiated by system APIs are also collected. In this case, disable iOS manual collection to prevent duplicate data collection |
| enableNativeUserView |
boolean |
No |
Whether to enable automatic Native View tracking. Default is false |
| errorMonitorType |
string/array |
No |
Additional error monitoring types: all, battery, memory, cpu. Not set by default |
| deviceMonitorType |
string/array |
No |
Additional page monitoring types: all, battery (Android only), memory, cpu, fps. Not set by default |
| detectFrequency |
string |
No |
Page monitoring frequency: normal (default), frequent, rare |
| globalContext |
object |
No |
Custom global context. Special key: track_id (used for tracing) |
| enableResourceHostIP |
boolean |
No |
Whether to collect the IP address of the request target domain. Only affects default collection when enableNativeUserResource = true |
| enableTrackNativeCrash |
boolean |
No |
Whether to enable Android Java Crash and OC/C/C++ crash monitoring. Default is false |
| enableTrackNativeAppANR |
boolean |
No |
Whether to enable Native ANR monitoring. Default is false |
| enableTrackNativeFreeze |
boolean |
No |
Whether to enable automatic Native Freeze tracking. Default is false |
| nativeFreezeDurationMs |
number |
No |
Sets the threshold for collecting Native Freeze jank, value range [100,), in milliseconds. iOS default is 250ms, Android default is 1000ms |
| rumDiscardStrategy |
string |
No |
Discard strategy: discard discards new data (default), discardOldest discards the oldest data |
| rumCacheLimitCount |
number |
No |
Maximum number of RUM entries in local cache, [10_000,), default 100_000 |
RUM Manual Instrumentation
The Unity SDK currently mainly implements custom RUM data collection through manual method calls.
Action
Differences between StartAction and AddAction
StartAction automatically calculates the Action duration. During this period, it attempts to associate with nearby Resource, LongTask, and Error data, and includes a 100 ms frequent-trigger protection. It is recommended for user-operation-type data.
- If you need to call frequently, use
AddAction. Actions reported via AddAction do not conflict with StartAction and are not associated with the current Resource, LongTask, or Error data.
Methods
/// <summary>
/// Adds an Action
/// </summary>
/// <param name="actionName">Action name</param>
/// <param name="actionType">Action type</param>
public static void StartAction(string actionName, string actionType)
/// <summary>
/// Adds an Action
/// </summary>
/// <param name="actionName">Action name</param>
/// <param name="actionType">Action type</param>
/// <param name="property">Additional property parameters</param>
public static void StartAction(string actionName, string actionType, Dictionary<string, object> property)
/// <summary>
/// Adds an Action
/// </summary>
/// <param name="actionName">Action name</param>
/// <param name="actionType">Action type</param>
public static void AddAction(string actionName, string actionType)
/// <summary>
/// Adds an Action
/// </summary>
/// <param name="actionName">Action name</param>
/// <param name="actionType">Action type</param>
/// <param name="property">Additional property parameters</param>
public static void AddAction(string actionName, string actionType, Dictionary<string, object> property)
Code Example
FTUnityBridge.StartAction("click", "test");
View
Methods
/// <summary>
/// Starts a View
/// </summary>
/// <param name="viewName">Current page name</param>
public static void StartView(string viewName)
/// <summary>
/// Starts a View
/// </summary>
/// <param name="viewName">Current page name</param>
/// <param name="property">Additional property parameters</param>
public static void StartView(string viewName, Dictionary<string, object> property)
/// <summary>
/// Stops a View
/// </summary>
public static void StopView()
/// <summary>
/// Stops a View
/// </summary>
/// <param name="property">Additional property parameters</param>
public static void StopView(Dictionary<string, object> property)
Code Example
FTUnityBridge.StartView("TEST_VIEW_ONE");
FTUnityBridge.StopView();
Resource
Methods
/// <summary>
/// Starts a Resource
/// </summary>
/// <param name="resourceId">Resource ID</param>
public static async Task StartResource(string resourceId)
/// <summary>
/// Starts a Resource
/// </summary>
/// <param name="resourceId">Resource ID</param>
/// <param name="property">Additional property parameters</param>
public static async Task StartResource(string resourceId, Dictionary<string, object> property)
/// <summary>
/// Stops a Resource
/// </summary>
/// <param name="resourceId">Resource ID</param>
public static async Task StopResource(string resourceId)
/// <summary>
/// Stops a Resource
/// </summary>
/// <param name="resourceId">Resource ID</param>
/// <param name="property">Additional property parameters</param>
public static async Task StopResource(string resourceId, Dictionary<string, object> property)
/// <summary>
/// Adds network transmission content and metrics
/// </summary>
/// <param name="resourceId">Resource ID</param>
/// <param name="resourceParams">Data transmission content</param>
public static async Task AddResource(string resourceId, ResourceParams resourceParams)
ResourceParams
| Method |
Type |
Required |
Description |
| url |
string |
Yes |
URL address |
| requestHeader |
string |
No |
Request header parameters, no format restrictions |
| responseHeader |
string |
No |
Response header parameters, no format restrictions |
| responseConnection |
string |
No |
Response connection |
| responseContentType |
string |
No |
Response ContentType |
| responseContentEncoding |
string |
No |
Response ContentEncoding |
| resourceMethod |
string |
No |
Request method, e.g., GET, POST |
| responseBody |
string |
No |
Returned body content |
Code Example
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
Methods
/// <summary>
/// Adds error information
/// </summary>
/// <param name="log">Log</param>
/// <param name="message">Message</param>
public static async Task AddError(string log, string message)
/// <summary>
/// Adds error information
/// </summary>
/// <param name="log">Log</param>
/// <param name="message">Message</param>
/// <param name="property">Additional property parameters</param>
public static async Task AddError(string log, string message, Dictionary<string, object> property)
Code Example
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
Methods
/// <summary>
/// Adds a long task
/// </summary>
/// <param name="log">Log content</param>
/// <param name="duration">Duration, in nanoseconds</param>
public static async Task AddLongTask(string log, long duration)
/// <summary>
/// Adds a long task
/// </summary>
/// <param name="log">Log content</param>
/// <param name="duration">Duration, in nanoseconds</param>
/// <param name="property">Additional property parameters</param>
public static async Task AddLongTask(string log, long duration, Dictionary<string, object> property)
Code Example
FTUnityBridge.AddLongTask("long task test", 100002);