コンテンツにスキップ

RUM 設定

RUM 初期設定

let rumConfig: FTRUMConfig = {
  androidAppId: Config.ANDROID_APP_ID,
  iOSAppId: Config.IOS_APP_ID,
  enableAutoTrackUserAction: true,
  enableAutoTrackError: true,
  enableNativeUserAction: true,
  enableNativeUserView: false,
  enableNativeUserResource: true,
  errorMonitorType: ErrorMonitorType.all,
  deviceMonitorType: DeviceMetricsMonitorType.all,
  detectFrequency: DetectFrequency.rare,
};

await FTReactNativeRUM.setConfig(rumConfig);
フィールド 必須 説明
androidAppId string はい app_id。リアルユーザーモニタリングコンソールで取得
iOSAppId string はい app_id。リアルユーザーモニタリングコンソールで取得
sampleRate number いいえ サンプリングレート。範囲 [0,1]、0 は収集なし、1 は全収集、デフォルトは 1。同一 session_id 内のすべての View、Action、LongTask、Error データに適用
sessionOnErrorSampleRate number いいえ エラー収集レート。sampleRate でサンプリングされなかったセッションでも、セッション中にエラーが発生した場合、エラー発生前 1 分間のデータを収集可能。範囲 [0,1]、0 は収集なし、1 は全収集、デフォルトは 0。同一 session_id 内のすべての View、Action、LongTask、Error データに適用。SDK 0.3.14 以上で対応
enableAutoTrackUserAction boolean いいえ React Native コンポーネントのクリックイベントを自動収集するかどうか。有効にすると、accessibilityLabel を使用して actionName を設定可能
enableAutoTrackError boolean いいえ React Native エラーを自動収集するかどうか。デフォルトは false
enableNativeUserAction boolean いいえ Native Action トラッキングを行うかどうか。ネイティブの Button クリックイベント、アプリ起動イベント。デフォルトは false
enableNativeUserView boolean いいえ Native View 自動トラッキングを行うかどうか。純粋な React Native アプリではオフ推奨。デフォルトは false
enableNativeUserResource boolean いいえ Native Resource 自動トラッキングを有効にするかどうか。React Native のネットワークリクエストは iOS、Android 側でシステム API を使用して実装されるため、有効にするとすべてのリソースデータを収集可能。デフォルトは false
errorMonitorType enum ErrorMonitorType いいえ 補助モニタリング情報を設定。RUM Error データに追加のモニタリングデータを添付。デフォルトは無効
deviceMonitorType enum DeviceMetricsMonitorType いいえ View 周期にモニタリングデータを追加。デフォルトは無効
detectFrequency enum DetectFrequency いいえ ビューパフォーマンスモニタリングのサンプリング周期。デフォルトは DetectFrequency.normal
enableResourceHostIP boolean いいえ リクエスト先ドメインの IP を収集するかどうか。スコープ:enableNativeUserResource = true のデフォルト収集のみ影響。iOS:>= iOS 13 で対応;Android:同一 OkhttpClient に IP キャッシュ機構あり
globalContext object いいえ カスタムタグを追加。ユーザー監視データソースの識別用。トラッキング機能を使用する場合は、パラメータ keytrack_idvalue を任意の数値に設定。追加ルールの注意事項はこちらを参照
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 いいえ 破棄戦略:FTRUMCacheDiscard.discard は新しいデータを破棄(デフォルト)、FTRUMCacheDiscard.discardOldest は古いデータを破棄
rumCacheLimitCount number いいえ ローカルキャッシュにおける RUM エントリの最大数制限 [10_000,)、デフォルト 100_000
enableTraceWebView boolean いいえ WebView データの収集を有効にするかどうか。デフォルトは true。SDK 0.3.16 以上で対応
allowWebViewHost Array いいえ データトラッキングを許可する WebView の host アドレス。null の場合はすべて収集、デフォルトは null。SDK 0.3.16 以上で対応
iosCrashMonitoringType enum IOSCrashMonitoringType いいえ SDK クラッシュ監視のタイプ範囲を設定。デフォルトは IOSCrashMonitoringType.highCompatibility。SDK 0.3.16 以上で対応

RUM ユーザーデータトラッキング

FTRUMConfig では、enableAutoTrackUserActionenableAutoTrackErrorenableNativeUserActionenableNativeUserViewenableNativeUserResource などの設定で自動収集を実現できます。手動収集が必要な場合は、以下の API も使用可能です。

View

SDK 初期化時に RUM 設定enableNativeUserView を設定すると、Native View の自動収集を有効化できます。React Native View については、React Native が画面ナビゲーションを作成するための豊富なライブラリを提供しているため、デフォルトでは手動収集のみ対応しています。React Native View の自動収集が必要な場合は、以下の「React Native View の自動収集」を参照してください。

使用方法

/**
 * view のロード時間。
 */
onCreateView(viewName: string, loadTime: number): Promise<void>;

/**
 * view 開始。
 */
startView(viewName: string, property?: object): Promise<void>;

/**
 * view 終了。
 */
stopView(property?: object): Promise<void>;

使用例

import { FTReactNativeRUM } from '@cloudcare/react-native-mobile';
FTReactNativeRUM.onCreateView('viewName', duration);

FTReactNativeRUM.startView('viewName', { 'custom.foo': 'something' });

FTReactNativeRUM.stopView({ 'custom.foo': 'something' });

React Native View の自動収集

React Native で react-native-navigationreact-navigation、または Expo Router ナビゲーションコンポーネントを使用している場合、以下の方法で React Native View の自動収集が可能です。

react-native-navigation

example から FTRumReactNavigationTracking.tsx ファイルをプロジェクトに追加してください。

FTRumReactNativeNavigationTracking.startTracking() メソッドを呼び出して収集を開始します。

import { FTRumReactNativeNavigationTracking } from './FTRumReactNativeNavigationTracking';

function startReactNativeNavigation() {
  FTRumReactNativeNavigationTracking.startTracking();
  registerScreens();
  Navigation.events().registerAppLaunchedListener(async () => {
    await Navigation.setRoot({
      root: {
        stack: {
          children: [{ component: { name: 'Home' } }],
        },
      },
    });
  });
}
react-navigation

example から FTRumReactNavigationTracking.tsx ファイルをプロジェクトに追加してください。

  • 方法 1:

createNativeStackNavigator(); を使用してネイティブナビゲーションスタックを作成している場合は、screenListeners を追加して収集を開始する方法をお勧めします。これによりページのロード時間を計測できます。具体的な使用方法は以下の通りです。

import { FTRumReactNavigationTracking } from './FTRumReactNavigationTracking';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

const Stack = createNativeStackNavigator();

<Stack.Navigator
  screenListeners={FTRumReactNavigationTracking.StackListener}
  initialRouteName="Home"
>
  <Stack.Screen name="Home" component={Home} options={{ headerShown: false }} />
  <Stack.Screen name="Mine" component={Mine} options={{ title: 'Mine' }} />
</Stack.Navigator>;
  • 方法 2:

createNativeStackNavigator(); を使用していない場合は、NavigationContainer コンポーネントに自動収集メソッドを追加します。以下のように設定してください。

注意:この方法ではページのロード時間を収集できません。

import { FTRumReactNavigationTracking } from './FTRumReactNavigationTracking';
import type { NavigationContainerRef } from '@react-navigation/native';

const navigationRef: React.RefObject<
  NavigationContainerRef<ReactNavigation.RootParamList>
> = React.createRef();

<NavigationContainer
  ref={navigationRef}
  onReady={() => {
    FTRumReactNavigationTracking.startTrackingViews(navigationRef.current);
  }}
>
  <Stack.Navigator initialRouteName="Home">
    <Stack.Screen name="Home" component={Home} options={{ headerShown: false }} />
    <Stack.Screen name="Mine" component={Mine} options={{ title: 'Mine' }} />
  </Stack.Navigator>
</NavigationContainer>;

具体的な使用例は example を参照してください。

Expo Router

Expo Router を使用している場合は、app/_layout.js ファイルに以下のメソッドを追加してデータ収集を行います。

import { useEffect } from 'react';
import { useSegments, usePathname, Slot } from 'expo-router';
import { FTReactNativeRUM } from '@cloudcare/react-native-mobile';
export default function Layout() {
  const pathname = usePathname();
  const segments = useSegments();
  const viewKey = segments.join('/');

  useEffect(() => {
    FTReactNativeRUM.startView(viewKey);
  }, [viewKey, pathname]);

  return <Slot />;
}

Action

使用方法

/**
 * RUM Action を開始します。
 */
startAction(actionName: string, actionType: string, property?: object): Promise<void>;

/**
 * Action イベントを追加します。
 */
addAction(actionName: string, actionType: string, property?: object): Promise<void>;

使用例

import { FTReactNativeRUM } from '@cloudcare/react-native-mobile';
FTReactNativeRUM.startAction('actionName', 'actionType', { 'custom.foo': 'something' });

FTReactNativeRUM.addAction('actionName', 'actionType', { 'custom.foo': 'something' });

Error

使用方法

/**
 * 例外キャプチャとログ収集。
 */
addError(stack: string, message: string, property?: object): Promise<void>;

/**
 * エラータイプを指定した例外キャプチャとログ収集。
 */
addErrorWithType(type: string, stack: string, message: string, property?: object): Promise<void>;

使用例

import { FTReactNativeRUM } from '@cloudcare/react-native-mobile';
FTReactNativeRUM.addError('error stack', 'error message', { 'custom.foo': 'something' });

FTReactNativeRUM.addErrorWithType('custom_error', 'error stack', 'error message', {
  'custom.foo': 'something',
});

Resource

使用方法

/**
 * リソースリクエストを開始します。
 */
startResource(key: string, property?: object): Promise<void>;

/**
 * リソースリクエストを終了します。
 */
stopResource(key: string, property?: object): Promise<void>;

/**
 * リソースデータメトリクスを送信します。
 */
addResource(key: string, resource: FTRUMResource, metrics?: FTRUMResourceMetrics): Promise<void>;

使用例

import { FTReactNativeRUM } from '@cloudcare/react-native-mobile';
async function getHttp(url: string) {
  const key = Utils.getUUID();
  FTReactNativeRUM.startResource(key);
  const fetchOptions = {
    method: 'GET',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    },
  };
  let res: Response;
  try {
    res = await fetch(url, fetchOptions);
  } finally {
    const resource: FTRUMResource = {
      url: url,
      httpMethod: fetchOptions.method,
      requestHeader: fetchOptions.headers,
    };
    if (res) {
      resource.responseHeader = res.headers;
      resource.resourceStatus = res.status;
      resource.responseBody = await res.text();
    }
    FTReactNativeRUM.stopResource(key);
    FTReactNativeRUM.addResource(key, resource);
  }
}

Action のカスタムルールの詳細は、データ収集カスタムルール を参照してください。

フィードバック

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