コンテンツにスキップ

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。リアルユーザーモニタリング(RUM)コンソールで取得
iOSAppId string はい app_id。リアルユーザーモニタリング(RUM)コンソールで取得
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 Error を自動収集するかどうか。デフォルトは false
enableNativeUserAction boolean いいえ Native Action トラッキングを行うかどうか。ネイティブの Button クリックイベント、アプリ起動イベント。デフォルトは false
enableNativeUserView boolean いいえ Native View の自動トラッキングを行うかどうか。純粋な React Native アプリではオフにすることを推奨。デフォルトは false
enableNativeUserResource boolean いいえ Native Resource の自動トラッキングを有効にするかどうか。React Native のネットワークリクエストは iOS、Android でシステム API を使用して実装されているため、有効にするとすべての resource データを合わせて収集できます。デフォルトは 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 いいえ カスタムタグを追加します。リアルユーザーモニタリング(RUM)データソースの識別に使用します。トラッキング機能を使用する場合、パラメータ key は track_id、value は任意の数値にします。追加ルールの注意事項はこちらを参照してください
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\<string> いいえ データトラッキングを許可する WebView の host アドレスを設定します。null の場合は全件収集、デフォルトは null。SDK 0.3.16 以降でサポート
iosCrashMonitoringType enum IOSCrashMonitoringType いいえ SDK クラッシュ監視のタイプ範囲を設定します。デフォルトは IOSCrashMonitoringType.highCompatibility。SDK 0.3.16 以降でサポート

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

FTRUMConfig では、enableAutoTrackUserAction、enableAutoTrackError、enableNativeUserAction、enableNativeUserView、enableNativeUserResource などの設定により自動収集を実現できます。手動で収集する場合は、以下の 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-navigation、react-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

startAction と addAction の使い分け
  • startAction は内部で自動的に Action の所要時間を計算します。計算中は近辺で発生した Resource、LongTask、Error データとの関連付けを試み、100 ms の頻繁なトリガーを防ぐ保護が設定されています。ユーザー操作タイプのデータに推奨されます。
  • 頻繁に呼び出す必要がある場合は、addAction を使用してください。addAction で報告された Action は startAction と競合せず、現在の Resource、LongTask、Error データとも関連付けられません。

使用方法

/**
 * 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 のカスタムルールの詳細については、データ収集カスタムルール を参照してください。

フィードバック

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