Flutter セッションリプレイ¶
前提条件¶
- Flutter RUM の設定と初期化が完了しており、View の監視収集が有効になっていることを確認してください。
- Flutter セッションリプレイを使用するには、
ft_mobile_agent_flutterとft_session_replay_flutterの両方をインストールする必要があります。 ft_mobile_agent_flutter0.5.7以降では Session Replay 機能がビルトインされなくなりました。Session Replay API はft_session_replay_flutterからインポートする必要があります。- Android 側では
ft-sdk:1.7.3、ft-native:1.1.3、ft-session-replay:0.1.6-beta01を使用します。iOS 側ではFTMobileSDK 1.6.5とFTMobileSDK/FTSessionReplay 1.6.5を使用します。 - iOS プロジェクトの Deployment Target は
12.0以上に設定する必要があります。 - 最初に RUM を初期化してから Session Replay を初期化し、
app_id、session_id、view_idなどのコンテキストが確立されていることを推奨します。
インストール¶
プロジェクトのパスで以下を実行します:
これにより、パッケージの pubspec.yaml に依存関係が追加されます:
dependencies:
ft_mobile_agent_flutter: [latest_version]
ft_session_replay_flutter: [session_replay_version]
未公開バージョンをローカルでデバッグする場合は、path 依存関係を使用できます:
dependencies:
ft_mobile_agent_flutter:
path: /path/to/ft-sdk-flutter
ft_session_replay_flutter:
path: /path/to/ft-sdk-flutter/packages/ft_session_replay_flutter
その後、以下を実行します:
iOS の追加設定¶
アプリの ios/Podfile で、最低バージョンが 12.0 以上であることを確認してください:
CocoaPods の依存関係を更新します:
CocoaPods が FTMobileSDK のバージョンまたは Deployment Target の競合を報告した場合は、プロジェクト内に他の依存関係があり、より低いバージョンの FTMobileSDK や iOS デプロイバージョンをロックしていないか確認してください。
コード呼び出し¶
Dart コードでメインパッケージと Session Replay パッケージの両方をインポートします:
import 'package:ft_mobile_agent_flutter/ft_mobile_agent_flutter.dart';
import 'package:ft_session_replay_flutter/ft_session_replay_flutter.dart';
推奨される初期化の順序:
WidgetsFlutterBinding.ensureInitialized()FTMobileFlutter.sdkConfig(...)FTRUMManager().setConfig(...)FTSessionReplayManager().setConfig(...)- 録画する Flutter ビューツリーを
SessionReplayCaptureでラップします
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await FTMobileFlutter.sdkConfig(
datawayUrl: datawayUrl,
cliToken: cliToken,
serviceName: serviceName,
debug: true,
);
await FTRUMManager().setConfig(
androidAppId: androidAppId,
iOSAppId: iOSAppId,
sampleRate: 1.0,
enableUserResource: true,
enableNativeAppUIBlock: true,
enableTrackNativeCrash: true,
);
await FTSessionReplayManager().setConfig(
FTSessionReplayConfig(
sampleRate: 1.0,
sessionReplayOnErrorSampleRate: 0.0,
touchPrivacy: FTTouchPrivacyLevel.show,
textAndInputPrivacy: FTTextAndInputPrivacyLevel.maskSensitiveInputs,
imagePrivacy: FTImagePrivacyLevel.maskAll,
enableSwiftUI: false,
),
);
runApp(
SessionReplayCapture(
key: const ValueKey('session-replay-root'),
child: const MyApp(),
),
);
}
アプリが MaterialApp.builder でページを一括ラップしている場合は、builder 内で SessionReplayCapture を使用することもできます:
MaterialApp(
builder: (BuildContext context, Widget? child) {
return SessionReplayCapture(
key: const ValueKey('session-replay-root'),
child: child ?? const SizedBox.shrink(),
);
},
);
| 属性 | タイプ | 必須 | 説明 |
|---|---|---|---|
| sampleRate | double | いいえ | サンプリングレート。範囲は [0,1]。0 は収集しない、1 は全収集。デフォルト値は 1。このサンプリングレートは RUM サンプリングに基づくサブサンプリングレートです。 |
| sessionReplayOnErrorSampleRate | double | いいえ | エラーシナリオにおける Session Replay のサンプリングレート。範囲は [0,1]。0 は収集しない、1 は全収集。デフォルト値は 0。 |
| touchPrivacy | FTTouchPrivacyLevel | いいえ | タッチ操作のプライバシーレベルを設定します。FTTouchPrivacyLevel.show はタッチ操作を表示、FTTouchPrivacyLevel.hide はタッチ操作を非表示。デフォルトは FTTouchPrivacyLevel.hide。 |
| textAndInputPrivacy | FTTextAndInputPrivacyLevel | いいえ | テキストと入力内容のプライバシーレベルを設定します。maskSensitiveInputs は機密性の高い入力のみをマスク、maskAllInputs はすべての入力をマスク、maskAll はすべてのテキストと入力をマスク。デフォルトは maskAll。 |
| imagePrivacy | FTImagePrivacyLevel | いいえ | 画像コンテンツのプライバシーレベルを設定します。maskNone は画像をマスクしない、maskLargeOnly はネイティブ SDK の部分的な画像マスク戦略を使用、maskAll はすべての画像をマスク。デフォルトは maskAll。 |
| enableLinkRUMKeys | List |
いいえ | 設定されたキーに基づいて、RUM Context 内の対応するフィールドをセッションリプレイデータに関連付けます。セッションリプレイデータの分流に使用できます。 |
| enableSwiftUI | bool | いいえ | iOS:ネイティブの SwiftUI セッションリプレイ録画を有効にするかどうか。デフォルトは false。Flutter Widget の録画には、引き続き SessionReplayCapture でビューツリーをラップする必要があります。 |
RUM View の関連付け¶
Session Replay データは RUM View コンテキストに関連付ける必要があります。FTRouteObserver を使用してページ遷移を自動収集するか、カスタムページライフサイクル内で FTRUMManager().starView(...) と FTRUMManager().stopView(...) を手動で呼び出してください。
ベース SDK または RUM が初期化されていない場合、Session Replay の初期化はアプリケーションのクラッシュを引き起こしませんが、アップロード可能なリプレイデータは生成されません。
プライバシーオーバーライド¶
SessionReplayPrivacy を使用すると、Flutter の局所的なビューツリーにプライバシーオーバーライドを設定できます。プライバシーオーバーライドはその子ビューにも適用されます。複数のオーバーライドが存在する場合、子ビューは最も近い親のプライバシー設定を使用します。
SessionReplayPrivacy(
textAndInputPrivacyLevel: FTTextAndInputPrivacyLevel.maskAll,
imagePrivacyLevel: FTImagePrivacyLevel.maskAll,
touchPrivacyLevel: FTTouchPrivacyLevel.hide,
child: child,
);
セッションリプレイの確認¶
モバイル端末でのセッションリプレイの確認方法は Web と同じです。Web セッションリプレイのアクセス方法を参照してください。