コンテンツにスキップ

Android セッションリプレイ

前提条件

  • FTSdk RUM の設定と初期化が完了し、View のモニタリング収集が有効になっていることを確認してください。
  • Android セッションリプレイには ft-sdk:1.7.0 以降のバージョンが必要です。
  • ft-session-replayft-session-replay-material は同じバージョン番号を使用してください。
  • ft-sdk 1.7.2 以降では ft-session-replay への強依存はなくなりました。セッションリプレイを有効にする場合のみ、ft-session-replay および関連する拡張依存関係を追加する必要があります。
  • ドキュメント上部のバッジに表示されている正式リリースの安定版を優先して使用することを推奨します。alphabeta などのプレリリース版は推奨しません。

  • 先行機能をいち早く取り入れたい、最新機能を確認したい、または未正式リリースの変更を追跡したい場合は、GitHub で Android SDK リポジトリおよび関連する更新ログを参照してください:GuanceCloud/datakit-android

Android ヒートマップ(実験的機能)

Android ヒートマップを使用するには、ft-sdk >= 1.7.4ft-session-replay >= 0.1.7 の両方を併用し、RUM ユーザー行動収集とセッションリプレイを有効にする必要があります。

ft-sdk >= 1.7.0 は引き続き通常の Android セッションリプレイの最小バージョン要件です。上記のバージョン組み合わせは Android ヒートマップにのみ適用されます。

設定

// SDK の依存関係を追加
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-sdk:[latest_version]'
// session replay 機能を有効にする場合
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay:[session_replay_version]'
// session replay で material コンポーネントをサポートする場合
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay-material:[session_replay_version]'
// session replay で compose コンポーネントをサポートする場合
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay-compose:[session_replay_version]'

Flutter RUM コンテキスト互換性

ft-session-replay 0.1.5 以降では、Flutter セッションリプレイのアップロード時に使用される RUM コンテキストフィールドと互換性があります。Android ネイティブプロジェクトに Flutter ページまたは Flutter SDK 収集リンクが同時に存在する場合、ft-session-replay:0.1.5 以降にアップグレードすると、追加設定なしで Flutter リプレイデータを対応するリプレイセグメントに正しくマッピングできます。

ハイブリッドシナリオでは、最初に RUM を初期化してからセッションリプレイを初期化し、app_idsession_idview_id などのコンテキストが確立されていることを確認することを推奨します。

コード呼び出し

FTSdk.initSessionReplayConfig(new FTSessionReplayConfig().setSampleRate(1f)
                .setTouchPrivacy(TouchPrivacy.SHOW)
                .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)
                .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
                .addExtensionSupport(new MaterialExtensionSupport()), context);
FTSdk.initSessionReplayConfig(FTSessionReplayConfig().setSampleRate(1f)
                .setTouchPrivacy(TouchPrivacy.SHOW)
                .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)
                .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
                .addExtensionSupport(MaterialExtensionSupport()), context)
メソッド名 必須 説明
setSampleRate Float いいえ サンプリングレートを設定します。範囲は [0,1]、0 は収集なし、1 は全収集、デフォルト値は 1 です。
setSessionReplayOnErrorSampleRate Float いいえ エラーサンプリングレートを設定します。セッションが setSampleRate でサンプリングされていない場合でも、セッション中にエラーが発生した場合、エラー発生の 1 分前までのデータを収集できます。範囲は [0,1]、0 は収集なし、1 は全収集、デフォルト値は 0 です。ft-session-replay 0.1.2-alpha01 以降でサポート
setPrivacy SessionReplayPrivacy いいえ SessionReplayPrivacy.ALLOW プライバシーデータをマスクしない、SessionReplayPrivacy.MASK すべてのデータ(テキスト、CheckBox、RadioButton、Switch)をマスクする、SessionReplayPrivacy.USER_INPUT(推奨)ユーザーが入力した一部のデータ(入力ボックス内のテキスト、CheckBox、RadioButton、Switch)をマスクする、デフォルトは SessionReplayPrivacy.MASKまもなく非推奨となります。互換性は維持されますが、setTouchPrivacysetTextAndInputPrivacy を使用したマスク設定を推奨します
setTextAndInputPrivacy TextAndInputPrivacy いいえ TextAndInputPrivacy.MASK_SENSITIVE_INPUTS パスワードなどの情報のみマスクする、TextAndInputPrivacy.MASK_ALL_INPUTS ユーザーが入力した一部のデータ(入力ボックス内のテキスト、CheckBox、RadioButton、Switch)をマスクする、TextAndInputPrivacy.MASK_ALL すべてのデータ(テキスト、CheckBox、RadioButton、Switch)をマスクする。デフォルトは TextAndInputPrivacy.MASK_ALL設定後は setPrivacy の設定を上書きしますft-session-replay 0.1.1-alpha01 以降でサポート
setImagePrivacy ImagePrivacy いいえ ImagePrivacy.MASK_ALL すべての画像をマスクする、ImagePrivacy.MASK_LARGE_ONLY 大きな画像のみマスクする(100x100 dp を超えるコンテンツ画像)、ImagePrivacy.MASK_NONE 画像をマスクしない。デフォルトは ImagePrivacy.MASK_ALL設定後は setPrivacy の設定を上書きしますft-sdk>= 1.7.0-alpha40ft-session-replay>= 0.1.3-alpha14
setTouchPrivacy TouchPrivacy いいえ TouchPrivacy.SHOW タッチデータをマスクしない、TouchPrivacy.HIDE タッチデータをマスクする。設定後は setPrivacy の設定を上書きしますft-session-replay 0.1.1-alpha01 以降でサポート
addExtensionSupport ExtensionSupport いいえ 追加のカスタムサポートを追加します。ft-session-replay-material を使用すると、MaterialExtensionSupport が提供する追加の Material コンポーネント収集サポートを利用できます。

プライバシーオーバーライド

ft-session-replay 0.1.1-alpha01 以降でサポート

SDK は、FTSessionReplayConfig によるグローバルマスクレベルの設定に加えて、ビューレベルでのこれらの設定のオーバーライドもサポートしています。

ビューレベルのプライバシーオーバーライド:

  • 画像マスクレベルのオーバーライドをサポート
  • テキストおよび入力マスクレベルとタッチマスクレベルのオーバーライドをサポート
  • 特定のビューの完全非表示の設定をサポート

注意:

  • オーバーライド設定を正しく認識するには、ビューのライフサイクルのできるだけ早い段階で適用してください。これにより、設定されたオーバーライドが適用される前にセッションリプレイがビューを処理するのを防ぎます。
  • プライバシーオーバーライドは、ビューとその子ビューに影響します。つまり、オーバーライドがすぐに有効にならない可能性のあるビュー(例えば、画像オーバーライドをテキスト入力に適用する場合)に適用された場合でも、オーバーライドはすべての子ビューに適用されます。
  • プライバシーオーバーライドの優先順位:子ビュー > 親ビュー > グローバル設定

画像オーバーライド

ft-sdk>= 1.7.0-alpha40ft-session-replay>= 0.1.3-alpha14

画像プライバシーをオーバーライドするには、ビューインスタンスで PrivacyOverrideExtensions.setSessionReplayImagePrivacy(View,ImagePrivacy) を使用して、ImagePrivacy 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、属性を null に設定します。

// 指定ビューに画像プライバシーオーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayImagePrivacy(view, ImagePrivacy.MASK_ALL);
// ビューの画像プライバシーオーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayImagePrivacy(view, null);
// 指定ビューに画像プライバシーオーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayImagePrivacy(view, ImagePrivacy.MASK_ALL)
// ビューの画像プライバシーオーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayImagePrivacy(view, null)

テキストと入力のオーバーライド

テキストと入力のプライバシーをオーバーライドするには、ビューインスタンスで PrivacyOverrideExtensions.setSessionReplayTextAndInputPrivacy(View,TextAndInputPrivacy) を使用して、TextAndInputPrivacy 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、属性を null に設定します。

// 指定ビューに非表示要素オーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayTextAndInputPrivacy(view, TextAndInputPrivacy.MASK_ALL);
// ビューの非表示要素オーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayTextAndInputPrivacy(view, null);
// 指定ビューに非表示要素オーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayTextAndInputPrivacy(view, TextAndInputPrivacy.MASK_ALL)
// ビューの非表示要素オーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayTextAndInputPrivacy(view, null)

タッチオーバーライド

タッチプライバシーをオーバーライドするには、ビューインスタンスで PrivacyOverrideExtensions.setSessionReplayTouchPrivacy(View,TouchPrivacy) を使用して、TouchPrivacy 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、属性を null に設定します。

// 指定ビューに非表示要素オーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayTouchPrivacy(view, TouchPrivacy.HIDE);
// ビューの非表示要素オーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayTouchPrivacy(view, null);
// 指定ビューに非表示要素オーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayTouchPrivacy(view, TouchPrivacy.HIDE)
// ビューの非表示要素オーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayTouchPrivacy(view, null)

非表示要素オーバーライド

完全に非表示にする必要がある機密要素については、PrivacyOverrideExtensions.setSessionReplayHidden(View,Boolean) を使用して設定します。

要素を非表示に設定すると、リプレイでは "Hidden" というプレースホルダーに置き換えられ、その子ビューは記録されません。

注意:ビューを非表示に設定しても、その要素でのタッチインタラクションの記録は防止されません。タッチインタラクションを非表示にするには、要素を非表示にするだけでなく、タッチオーバーライド を使用してください。

// 指定ビューに非表示要素オーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayHidden(view, true)
// ビューの非表示要素オーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayHidden(view, false)
// 指定ビューに非表示要素オーバーライドを設定
PrivacyOverrideExtensions.setSessionReplayHidden(view, true)
// ビューの非表示要素オーバーライド設定を削除
PrivacyOverrideExtensions.setSessionReplayHidden(view, false)

Webview セッションリプレイ

ft-session-replay 0.1.3-alpha11、ft-sdk 1.7.0-alpha36 以降でサポート

WebView セッションリプレイを使用するには、WebView でアクセスするページに Web モニタリング SDK を統合し、WebView でセッションリプレイを有効にする必要があります。

//webview RUM 設定以外
window.DATAFLUX_RUM.startSessionReplayRecording();

Tencent Webview X5 サポート

FTSdk.initSessionReplayConfig(new FTSessionReplayConfig()
    //...
    // 追加で CustomExtensionSupport を設定
    .addExtensionSupport(new CustomExtensionSupport()
            .addMapper(new MapperTypeWrapper<>(com.tencent.smtt.sdk.WebView.class,
                    new WebViewXWireframeMapper())))
)
FTSdk.initSessionReplayConfig(FTSessionReplayConfig()
    //...
    // 追加で CustomExtensionSupport を設定
    .addExtensionSupport(
        CustomExtensionSupport()
            .addMapper(
                MapperTypeWrapper(
                    com.tencent.smtt.sdk.WebView::class.java,
                    WebViewXWireframeMapper()
                )
            )
    )
)

Jetpack Compose サポート

ft-session-replay-composeft-session-replay は同じバージョン番号を使用してください。

Android セッションリプレイは、Jetpack Compose インターフェースの収集とリプレイをサポートしています。Compose ページを使用する場合は、追加で Compose 拡張依存関係を導入し、FTSessionReplayConfigComposeExtensionSupport を追加する必要があります。

依存関係の追加

implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay-compose:[session_replay_version]'

初期化設定

FTSdk.initSessionReplayConfig(new FTSessionReplayConfig().setSampleRate(1f)
                .setTouchPrivacy(TouchPrivacy.SHOW)
                .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)
                .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
                .addExtensionSupport(new ComposeExtensionSupport())
                .addExtensionSupport(new MaterialExtensionSupport()), context);
FTSdk.initSessionReplayConfig(FTSessionReplayConfig().setSampleRate(1f)
                .setTouchPrivacy(TouchPrivacy.SHOW)
                .setImagePrivacy(ImagePrivacy.MASK_LARGE_ONLY)
                .setTextAndInputPrivacy(TextAndInputPrivacy.MASK_SENSITIVE_INPUTS)
                .addExtensionSupport(ComposeExtensionSupport())
                .addExtensionSupport(MaterialExtensionSupport()), context)

Compose プライバシーオーバーライド

Compose ページでは、Modifier を使用してセッションリプレイのプライバシー設定をオーバーライドできます:

  • sessionReplayHide(Boolean):指定された Compose ノードを非表示にする
  • sessionReplayImagePrivacy(ImagePrivacy):画像プライバシーレベルをオーバーライドする
  • sessionReplayTextAndInputPrivacy(TextAndInputPrivacy):テキストと入力のプライバシーレベルをオーバーライドする
  • sessionReplayTouchPrivacy(TouchPrivacy):タッチプライバシーレベルをオーバーライドする

現在の制限事項

  • Compose リプレイはセマンティックノードとコンポーネントマッピングに依存するため、ピクセル単位の再現は保証されません。
  • 現在、一般的なテキスト、入力ボックス、画像、ボタン、スイッチ、スライダー、ラジオボタン、チェックボックス、タブ、およびコンテナ系コンポーネントのリプレイをサポートしています。
  • Brush の背景は現在サポートされていません。例えば、線形グラデーションや放射状グラデーションなどの背景は元のグラデーション効果で再現されません。重要なデモ領域では、ソリッドカラーの背景を優先して使用することを推奨します。

コードと設定の参考

フィードバック

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