コンテンツにスキップ

RUM 設定

RUM 初期化設定

FTRumConfig *rumConfig = [[FTRumConfig alloc] initWithAppid:appid];
rumConfig.enableTrackAppCrash = YES;
rumConfig.enableTrackAppANR = YES;
rumConfig.enableTrackAppFreeze = YES;
rumConfig.enableTraceUserAction = YES;
rumConfig.enableTraceUserView = YES;
rumConfig.enableTraceUserResource = YES;
rumConfig.errorMonitorType = FTErrorMonitorAll;
rumConfig.deviceMetricsMonitorType = FTDeviceMetricsMonitorAll;
[[FTSDKAgent sharedInstance] startRumWithConfigOptions:rumConfig];
let rumConfig = FTRumConfig(appid: appid)
rumConfig.enableTraceUserAction = true
rumConfig.enableTrackAppANR = true
rumConfig.enableTraceUserView = true
rumConfig.enableTraceUserResource = true
rumConfig.enableTrackAppCrash = true
rumConfig.enableTrackAppFreeze = true
rumConfig.errorMonitorType = .all
rumConfig.deviceMetricsMonitorType = .all
rumConfig.monitorFrequency = .rare
FTSDKAgent.sharedInstance().startRum(withConfigOptions: rumConfig)
属性 型 必須 説明
appid NSString はい ユーザーアクセス監視(RUM)アプリケーション ID の一意識別子。RUM の appid を設定することで RUM 収集機能が有効になります。appid の取得方法
sampleRate int いいえ サンプリングレート。範囲は [0,100]。0 は収集しない、100 は全収集を意味します。デフォルト値は 100。スコープは同一 session_id 内のすべての View、Action、LongTask、Error データです。
enableTrackAppCrash BOOL いいえ クラッシュログを収集するかどうかを設定します。デフォルトは NO。
enableTrackAppANR BOOL いいえ ANR(アプリケーション無応答)イベントを収集します。デフォルトは NO。
enableTrackAppFreeze BOOL いいえ UI のカクツキイベントを収集します。デフォルトは NO。
enableTraceUserView BOOL いいえ ユーザーの View 操作を追跡するかどうかを設定します。デフォルトは NO。
enableTraceUserAction BOOL いいえ ユーザーの Action 操作を追跡するかどうかを設定します。デフォルトは NO。
enableTraceUserResource BOOL いいえ ユーザーのネットワークリクエストを追跡するかどうかを設定します。デフォルトは NO。ネイティブの http のみに作用します。
resourceUrlHandler FTResourceUrlHandler いいえ カスタム Resource 収集ルール。デフォルトではフィルタリングされません。NO を返すと収集、YES を返すと収集しません。詳細はデータ収集カスタムルールを参照してください。
errorMonitorType FTErrorMonitorType いいえ エラーイベント監視の補完タイプ。収集したクラッシュデータに監視情報を追加します。デフォルトでは設定されません。
monitorFrequency FTMonitorFrequency いいえ ビューのパフォーマンス監視のサンプリング周期。
deviceMetricsMonitorType FTDeviceMetricsMonitorType いいえ ビューのパフォーマンス監視タイプ。収集した View データに対応する監視項目情報を追加します。デフォルトでは設定されません。
globalContext NSDictionary いいえ カスタムタグを追加します。ユーザー監視データソースの区別に使用します。トレース機能を使用する場合、パラメータ key は track_id、value は任意の数値に設定してください。追加ルールはカスタムタグの使用を参照してください。

RUM ユーザーデータ追跡

FTRUMConfig を使用して自動モードを有効にするか、手動で追加することができます。RUM 関連データは FTGlobalRumManager シングルトンインスタンスを介して転送されます。関連する API は以下のとおりです。

View

enableTraceUserView = YES を設定して自動収集を有効にすると、SDK は自動的に Window のライフサイクルを収集します。Window のライフサイクル -becomeKeyWindow を View の開始、-resignKeyWindow を View の終了として定義します。

ページ名は NSStringFromClass(window.contentViewController.class) > NSStringFromClass(window.windowController.class) > NSStringFromClass(window) の優先順位で設定されます。

Window 内のビューが複雑な場合は、以下の API を使用してカスタム収集を行うことができます。

使用方法

/// ページの作成
///
/// `-startViewWithName` メソッドの前に呼び出します。このメソッドはページの読み込み時間を記録するために使用します。読み込み時間を取得できない場合は、このメソッドを呼び出す必要はありません。
/// - Parameters:
///  - viewName: ページ名
///  - loadTime: ページ読み込み時間(ナノ秒)
-(void)onCreateView:(NSString *)viewName loadTime:(NSNumber *)loadTime;

/// ページへの遷移
/// - Parameters:
///  - viewName: ページ名
///  - property: イベントのカスタム属性(オプション)
-(void)startViewWithName:(NSString *)viewName property:(nullable NSDictionary *)property;

/// ページの離脱
/// - Parameter property: イベントのカスタム属性(オプション)
-(void)stopViewWithProperty:(nullable NSDictionary *)property;
/// ページの作成
///
/// `-startViewWithName` メソッドの前に呼び出します。このメソッドはページの読み込み時間を記録するために使用します。読み込み時間を取得できない場合は、このメソッドを呼び出す必要はありません。
/// - Parameters:
///  - viewName: ページ名
///  - loadTime: ページ読み込み時間(ns)
open func onCreateView(_ viewName: String, loadTime: NSNumber)

/// ページへの遷移
/// - Parameters:
///  - viewName: ページ名
///  - property: イベントのカスタム属性(オプション)
open func startView(withName viewName: String, property: [AnyHashable : Any]?)

/// ページの離脱
/// - Parameter property: イベントのカスタム属性(オプション)
open func stopView(withProperty property: [AnyHashable : Any]?)

コード例

- (void)viewDidAppear{
  [super viewDidAppear];
  [[FTGlobalRumManager sharedManager] startViewWithName:@"TestVC"];
  [[FTGlobalRumManager sharedManager] startViewWithName:@"TestVC" property:@{@"custom_key":@"custom_value"}];
}
-(void)viewDidDisappear{
  [super viewDidDisappear];
  [[FTGlobalRumManager sharedManager] stopView];
  [[FTGlobalRumManager sharedManager] stopViewWithProperty:@{@"custom_key":@"custom_value"}];
}
override func viewDidAppear() {
    super.viewDidAppear()
    FTExternalDataManager.shared().startView(withName: "TestVC")
    FTExternalDataManager.shared().startView(withName: "TestVC", property: ["custom_key":"custom_value"])
}
override func viewDidDisappear() {
    super.viewDidDisappear()
    FTGlobalRumManager.shared().stopView()
    FTGlobalRumManager.shared().stopView(withProperty: ["custom_key":"custom_value"])
}

Action

使用方法

/// Action イベントの追加
/// - Parameters:
///   - actionName: イベント名
///   - actionType: イベントタイプ
///   - property: イベントのカスタム属性(オプション)
- (void)addActionName:(NSString *)actionName actionType:(NSString *)actionType property:(nullable NSDictionary *)property;
/// Action イベントの追加
/// - Parameters:
///   - actionName: イベント名
///   - actionType: イベントタイプ
///   - property: イベントのカスタム属性(オプション)
func addActionName(String, actionType: String, property: [AnyHashable : Any]?)

コード例

[[FTGlobalRumManager sharedManager] addActionName:@"UITableViewCell click" actionType:@"click"];
[[FTGlobalRumManager sharedManager] addActionName:@"UITableViewCell click" actionType:@"click" property:@{@"custom_key":@"custom_value"}];
FTGlobalRumManager.shared().addActionName("custom_action", actionType: "click")
FTGlobalRumManager.shared().addActionName("custom_action", actionType: "click", property: ["custom_key":"custom_value"])

Error

使用方法

/// Error イベントの追加
/// - Parameters:
///   - type: error タイプ
///   - message: エラーメッセージ
///   - stack: スタック情報
///   - property: イベントのカスタム属性(オプション)
- (void)addErrorWithType:(NSString *)type message:(NSString *)message stack:(NSString *)stack property:(nullable NSDictionary *)property;

/// Error イベントの追加
/// - Parameters:
///   - type: error タイプ
///   - state: プログラム実行状態
///   - message: エラーメッセージ
///   - stack: スタック情報
///   - property: イベントのカスタム属性(オプション)
- (void)addErrorWithType:(NSString *)type state:(FTAppState)state  message:(NSString *)message stack:(NSString *)stack property:(nullable NSDictionary *)property;
/// Error イベントの追加
/// - Parameters:
///   - type: error タイプ
///   - message: エラーメッセージ
///   - stack: スタック情報
///   - property: イベントのカスタム属性(オプション)
open func addError(withType: String, message: String, stack: String, property: [AnyHashable : Any]?)

/// Error イベントの追加
/// - Parameters:
///   - type: error タイプ
///   - state: プログラム実行状態
///   - message: エラーメッセージ
///   - stack: スタック情報
///   - property: イベントのカスタム属性(オプション)
open func addError(withType type: String, state: FTAppState, message: String, stack: String, property: [AnyHashable : Any]?)

コード例

[[FTGlobalRumManager sharedManager] addErrorWithType:@"type" message:@"message" stack:@"stack"];
[[FTGlobalRumManager sharedManager] addErrorWithType:@"ios_crash" message:@"crash_message" stack:@"crash_stack" property:@{@"custom_key":@"custom_value"}];
[[FTGlobalRumManager sharedManager] addErrorWithType:@"ios_crash" state:FTAppStateUnknown message:@"crash_message" stack:@"crash_stack" property:@{@"custom_key":@"custom_value"}];
FTGlobalRumManager.shared().addError(withType: "custom_type", message: "custom_message", stack: "custom_stack")
FTGlobalRumManager.shared().addError(withType: "custom_type", message: "custom_message", stack: "custom_stack", property: ["custom_key":"custom_value"])
FTGlobalRumManager.shared().addError(withType: "custom_type", state: .unknown, message: "custom_message", stack: "custom_stack", property: ["custom_key":"custom_value"])

LongTask

使用方法

/// カクツキイベントの追加
/// - Parameters:
///   - stack: カクツキスタック
///   - duration: カクツキ時間(ナノ秒)
///   - property: イベントのカスタム属性(オプション)
- (void)addLongTaskWithStack:(NSString *)stack duration:(NSNumber *)duration property:(nullable NSDictionary *)property;
/// カクツキイベントの追加
/// - Parameters:
///   - stack: カクツキスタック
///   - duration: カクツキ時間(ナノ秒)
///   - property: イベントのカスタム属性(オプション)
func addLongTask(withStack: String, duration: NSNumber, property: [AnyHashable : Any]?)

コード例

[[FTGlobalRumManager sharedManager] addLongTaskWithStack:@"stack string" duration:@1000000000];
[[FTGlobalRumManager sharedManager] addLongTaskWithStack:@"stack string" duration:@1000000000 property:@{@"custom_key":@"custom_value"}];
FTGlobalRumManager.shared().addLongTask(withStack: "stack string", duration: 1000000000)
FTGlobalRumManager.shared().addLongTask(withStack: "stack string", duration: 1000000000, property: ["custom_key":"custom_value"])

Resource

使用方法

/// HTTP リクエスト開始
/// - Parameters:
///   - key: リクエスト識別子
///   - property: イベントのカスタム属性(オプション)
- (void)startResourceWithKey:(NSString *)key property:(nullable NSDictionary *)property;

/// HTTP リクエストデータの追加
///
/// - Parameters:
///   - key: リクエスト識別子
///   - metrics: リクエスト関連のパフォーマンス属性
///   - content: リクエスト関連データ
- (void)addResourceWithKey:(NSString *)key metrics:(nullable FTResourceMetricsModel *)metrics content:(FTResourceContentModel *)content;

/// HTTP リクエスト終了
/// - Parameters:
///   - key: リクエスト識別子
///   - property: イベントのカスタム属性(オプション)
- (void)stopResourceWithKey:(NSString *)key property:(nullable NSDictionary *)property;
/// HTTP リクエスト開始
/// - Parameters:
///   - key: リクエスト識別子
///   - property: イベントのカスタム属性(オプション)
open func startResource(withKey key: String, property: [AnyHashable : Any]?)

/// HTTP リクエスト終了
/// - Parameters:
///   - key: リクエスト識別子
///   - property: イベントのカスタム属性(オプション)
open func stopResource(withKey key: String, property: [AnyHashable : Any]?)

/// HTTP リクエストデータの追加
///
/// - Parameters:
///   - key: リクエスト識別子
///   - metrics: リクエスト関連のパフォーマンス属性
///   - content: リクエスト関連データ
open func addResource(withKey key: String, metrics: FTResourceMetricsModel?, content: FTResourceContentModel)

コード例

#import "FTMacOSSDK.h"

[[FTGlobalRumManager sharedManager] startResourceWithKey:key];
[[FTGlobalRumManager sharedManager] stopResourceWithKey:key];

FTResourceContentModel *content = [[FTResourceContentModel alloc] init];
content.httpMethod = request.HTTPMethod;
content.requestHeader = request.allHTTPHeaderFields;
content.responseHeader = httpResponse.allHeaderFields;
content.httpStatusCode = httpResponse.statusCode;
content.responseBody = responseBody;
content.error = error;

FTResourceMetricsModel *metricsModel = [[FTResourceMetricsModel alloc] initWithTaskMetrics:metrics];
metricsModel = [[FTResourceMetricsModel alloc] init];

[[FTGlobalRumManager sharedManager] addResourceWithKey:key metrics:metricsModel content:content];
import FTMacOSSDK

FTGlobalRumManager.shared().startResource(withKey: key)
FTGlobalRumManager.shared().stopResource(withKey: resource.key)

let contentModel = FTResourceContentModel(request: task.currentRequest!, response: task.response as? HTTPURLResponse, data: resource.data, error: error)

var metricsModel: FTResourceMetricsModel?
if let metrics = resource.metrics {
   metricsModel = FTResourceMetricsModel(taskMetrics: metrics)
}
metricsModel = FTResourceMetricsModel()

FTGlobalRumManager.shared().addResource(withKey: resource.key, metrics: metricsModel, content: contentModel)

フィードバック

このページは役に立ちましたか?