Skip to content

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);