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¶
使用方法¶
コード例¶
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¶
使用方法¶
コード例¶
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)