コンテンツにスキップ

iOS セッションリプレイ

前提条件

  • GuanceSDKRUM 設定をセットアップし、初期化していること、および View の監視収集が有効になっていることを確認してください。
  • iOS セッションリプレイのバージョンサポート:SDK.Version >= 1.6.0
  • 旧バージョンから SDK 1.6.6 以上にアップグレードする場合、セッションリプレイの製品名が GuanceSessionReplay に変更されています。移行ガイドを参照してください。
  • ドキュメント上部のバッジに表示されている正式リリースの安定版を優先的に使用することを推奨します。alphabeta などのプレリリース版は推奨しません。

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

設定

お使いのパッケージマネージャーに応じて、GuanceSDK ライブラリ内の GuanceSessionReplay 機能コンポーネントをプロジェクトにリンクします。

CocoaPods

pod 'GuanceSDK', 'last_version'
pod 'GuanceSDK/SessionReplay', 'last_version' # 追加

Swift Package Manager

dependencies: [
.package(url: "https://github.com/GuanceCloud/datakit-ios.git",
from: "last_version")
],
targets: [
    .target(
        name: "YourTarget",
        dependencies: [
            .product(name: "GuanceSDK", package: "GuanceSDK"),
            .product(name: "GuanceSessionReplay", package: "GuanceSDK"), // 追加
        ]),
]

Carthage / Framework

SDK 1.6.2 以上でサポート

Carthage を使用する場合、または Framework を手動で統合する場合、基本 SDK に加えて、GuanceSessionReplay セッションリプレイコンポーネントもメインプロジェクトターゲットの Frameworks に追加する必要があります。

GuanceSessionReplay はセッションリプレイ機能コンポーネントであり、GuanceSDK の基本機能に依存するため、単独では使用できません。

Objective-C のエントリ

Objective-C の import パスは統合方法によって異なります。

統合方法 推奨エントリ
CocoaPods #import <GuanceSDK/GuanceSessionReplay.h>
Swift Package Manager @import GuanceSessionReplay;
Carthage / Framework #import <GuanceSessionReplay/GuanceSessionReplay.h>
以下の Objective-C のサンプルは、Swift Package Manager の記法に統一しています。CocoaPods または Carthage / Framework で統合する場合は、上記の表に従ってエントリ行を置き換えてください。

コード呼び出し

@import GuanceSessionReplay;
FTSessionReplayConfig *srConfig = [[FTSessionReplayConfig alloc]init];
   srConfig.touchPrivacy = FTTouchPrivacyLevelShow;
   srConfig.textAndInputPrivacy = FTTextAndInputPrivacyLevelMaskSensitiveInputs;
   srConfig.imagePrivacy = FTImagePrivacyLevelMaskNonBundledOnly;
   // SwiftUI ページを収集したい場合、SDK 1.6.5 以上で有効化可能
   srConfig.enableSwiftUI = YES;
   // セッションリプレイのヒートマップ連携を有効にしたい場合、SDK 1.6.6 以上で有効化可能
   srConfig.enableHeatmap = YES;
   srConfig.sampleRate = 100;
   [[FTRumSessionReplay sharedInstance] startWithSessionReplayConfig:srConfig];
   let srConfig = FTSessionReplayConfig.init()
   srConfig.touchPrivacy = .show
   srConfig.textAndInputPrivacy = .maskSensitiveInputs
   srConfig.imagePrivacy = .maskNonBundledOnly
   // SwiftUI ページを収集したい場合、SDK 1.6.5 以上で有効化可能
   srConfig.enableSwiftUI = true
   // セッションリプレイのヒートマップ連携を有効にしたい場合、SDK 1.6.6 以上で有効化可能
   srConfig.enableHeatmap = true
   srConfig.sampleRate = 100
   FTRumSessionReplay.shared().start(with: srConfig)
プロパティ 必須 説明
sampleRate int いいえ サンプリングレート。範囲 [0,100]、0 は収集しない、100 は全収集を意味します。デフォルト値は 100 です。このサンプリングレートは RUM サンプリングに基づく追加のサンプリングレートです。
sessionReplayOnErrorSampleRate int いいえ エラー収集率を設定します。セッションが sampleRate でサンプリングされなかった場合、セッション中にエラーが発生すると、エラー発生 1 分前までのデータを収集できます。範囲 [0,100]、0 は収集しない、100 は全収集を意味します。デフォルト値は 0 です。SDK 1.6.2 以上でサポート
privacy FTSRPrivacy いいえ セッションリプレイにおけるコンテンツマスキングのプライバシーレベルを設定します。デフォルトは FTSRPrivacyMask です。
マスキング処理:テキストを * または # に置き換えます。
FTSRPrivacyAllow: 機密性の高い入力コントロールを除くテキストと入力内容を記録し、ユーザータッチを表示し、すべての画像を記録します。
FTSRPrivacyMaskUserInput: 入力要素をマスキングし、ユーザータッチを非表示にします。SF Symbols および [UIImage imageNamed:] / UIImage(named:) で読み込まれ、アプリにバンドルされている画像のみ記録します。
FTSRPrivacyMask: すべてのテキスト、入力、タッチ、画像をマスキングします。
まもなく非推奨となりますが、互換性は維持されます。touchPrivacytextAndInputPrivacyimagePrivacy を使用して細かいプライバシーレベルを設定することを推奨します。
touchPrivacy FTTouchPrivacyLevel いいえ セッションリプレイにおけるタッチマスキングのプライバシーレベル。デフォルトは FTTouchPrivacyLevelHide です。
FTTouchPrivacyLevelShow: すべてのユーザータッチを表示する
FTTouchPrivacyLevelHide: すべてのユーザータッチをマスキングする
設定後は privacy の設定を上書きします。
SDK 1.6.1 以上でサポート
textAndInputPrivacy FTTextAndInputPrivacyLevel いいえ セッションリプレイにおけるテキストと入力のマスキングのプライバシーレベル。デフォルトは FTTextAndInputPrivacyLevelMaskAll です。
FTTextAndInputPrivacyLevelMaskSensitiveInputs: パスワード入力などの機密性の高い入力を除くすべてのテキストを表示する
FTTextAndInputPrivacyLevelMaskAllInputs: UITextFieldUISwitchUISlider などのすべての入力フィールドをマスキングする
FTTextAndInputPrivacyLevelMaskAll: すべてのテキストと入力をマスキングする
設定後は privacy の設定を上書きします。
SDK 1.6.1 以上でサポート
imagePrivacy FTImagePrivacyLevel いいえ セッションリプレイにおける画像マスキングのプライバシーレベル。デフォルトは FTImagePrivacyLevelMaskAll です。
FTImagePrivacyLevelMaskNonBundledOnly: SF Symbols および [UIImage imageNamed:] / UIImage(named:) で読み込まれ、アプリにバンドルされている画像のみ記録します。ネットワークダウンロードや実行時に生成された画像はマスキングされます。
FTImagePrivacyLevelMaskAll: すべての画像をマスキングする
FTImagePrivacyLevelMaskNone: ネットワークダウンロードや実行時に生成された画像を含むすべての画像を記録します。画像に機密情報が含まれていないことを確認した上で使用してください。
設定後は privacy の設定を上書きします。
SDK 1.6.2 以上でサポート
enableSwiftUI BOOL いいえ SwiftUI ページのセッションリプレイ収集を有効にします。デフォルト値は NO です。SDK 1.6.5 以上でサポート
enableHeatmap BOOL いいえ セッションリプレイのヒートマップ連携機能を有効にします。デフォルト値は NO で、実験的機能です。SDK 1.6.6 以上でサポート
enableLinkRUMKeys NSArray いいえ 有効にすると、設定した keys に基づいて RUM コンテキストの対応フィールドをセッションリプレイデータに関連付けます。セッションリプレイデータの振り分けに使用できます。
SDK 1.6.2 以上でサポート

注意enableHeatmap は自動収集された UIKit アクションとの関連付けにのみ使用されます。一部の UIKit アクションはヒートマップをサポートしていない場合があります。SwiftUI アクションは現在自動収集をサポートしていないため、enableHeatmap でヒートマップを関連付けることはできません。

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

SDK 1.6.1 以上でサポート

SDK では、FTSessionReplayConfig でグローバルなマスキングレベルを設定するだけでなく、ビューレベルでこれらの設定を上書きすることもできます。

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

  • テキストと入力のマスキングレベル、タッチのマスキングレベル、および画像のマスキングレベル(SDK 1.6.2 以上でサポート)の上書きをサポートします。
  • 特定のビューを完全に非表示にする設定をサポートします。

注意:

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

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

テキストと入力のプライバシーを上書きするには、ビューインスタンスで sessionReplayPrivacyOverrides.textAndInputPrivacy を使用し、FTTextAndInputPrivacyLevelOverride 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、プロパティを FTTextAndInputPrivacyLevelOverrideNone に設定します。

@import GuanceSessionReplay;
// 指定ビューにテキストと入力のオーバーライドを設定
   myView.sessionReplayPrivacyOverrides.textAndInputPrivacy = FTTextAndInputPrivacyLevelOverrideMaskAll;
   // ビューのテキストと入力のオーバーライド設定を削除
   myView.sessionReplayPrivacyOverrides.textAndInputPrivacy = FTTextAndInputPrivacyLevelOverrideNone;
   // 指定ビューにテキストと入力のオーバーライドを設定
   myView.sessionReplayPrivacyOverrides.textAndInputPrivacy = .maskAll
   // ビューのテキストと入力のオーバーライド設定を削除
   myView.sessionReplayPrivacyOverrides.textAndInputPrivacy = .none

タッチのオーバーライド

タッチのプライバシーを上書きするには、ビューインスタンスで sessionReplayPrivacyOverrides.touchPrivacy を使用し、FTTouchPrivacyLevelOverride 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、プロパティを FTTouchPrivacyLevelOverrideNone に設定します。

@import GuanceSessionReplay;
// 指定ビューにタッチのオーバーライドを設定
   myView.sessionReplayPrivacyOverrides.touchPrivacy = FTTouchPrivacyLevelOverrideShow;
   // ビューのタッチのオーバーライド設定を削除
   myView.sessionReplayPrivacyOverrides.touchPrivacy = FTTouchPrivacyLevelOverrideNone;
   // 指定ビューにタッチのオーバーライドを設定
   myView.sessionReplayPrivacyOverrides.touchPrivacy = .show;
   // ビューのタッチのオーバーライド設定を削除
   myView.sessionReplayPrivacyOverrides.touchPrivacy = .none;

画像のオーバーライド

SDK 1.6.2 以上でサポート

画像のプライバシーを上書きするには、ビューインスタンスで sessionReplayPrivacyOverrides.imagePrivacy を使用し、FTImagePrivacyLevelOverride 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、プロパティを FTImagePrivacyLevelOverrideNone に設定します。

利用可能な画像オーバーライドレベル:

  • FTImagePrivacyLevelOverrideMaskNonBundledOnly: SF Symbols および [UIImage imageNamed:] / UIImage(named:) で読み込まれ、アプリにバンドルされている画像のみ記録します。ネットワークダウンロードや実行時に生成された画像はマスキングされます。
  • FTImagePrivacyLevelOverrideMaskAll: すべての画像をマスキングする
  • FTImagePrivacyLevelOverrideMaskNone: ネットワークダウンロードや実行時に生成された画像を含むすべての画像を記録します。画像に機密情報が含まれていないことを確認した上で使用してください。
@import GuanceSessionReplay;
// 指定ビューに画像のオーバーライドを設定
   myImageView.sessionReplayPrivacyOverrides.imagePrivacy = FTImagePrivacyLevelOverrideMaskNonBundledOnly;
   // ビューの画像のオーバーライド設定を削除
   myImageView.sessionReplayPrivacyOverrides.imagePrivacy = FTImagePrivacyLevelOverrideNone;
   // 指定ビューに画像のオーバーライドを設定
   myImageView.sessionReplayPrivacyOverrides.imagePrivacy = .maskNonBundledOnly
   // ビューの画像のオーバーライド設定を削除
   myImageView.sessionReplayPrivacyOverrides.imagePrivacy = .none

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

完全に非表示にする必要がある機密要素については、sessionReplayPrivacyOverrides.hide を使用して設定します。

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

注意:ビューを非表示としてマークしても、その要素でのタッチインタラクションの記録は妨げられません。タッチインタラクションを非表示にするには、要素を非表示としてマークすることに加えて、タッチのオーバーライドも使用してください。

@import GuanceSessionReplay;
// 指定ビューを非表示要素としてマーク
   myView.sessionReplayPrivacyOverrides.hide = YES;
   // ビューの非表示要素オーバーライド設定を削除
   myView.sessionReplayPrivacyOverrides.hide = NO;
   // 指定ビューを非表示要素としてマーク
   myView.sessionReplayPrivacyOverrides.hide = true;
   // ビューの非表示要素オーバーライド設定を削除
   myView.sessionReplayPrivacyOverrides.hide = false;

WebView セッションリプレイ

SDK 1.6.2 以上でサポート

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

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

コードと設定の参考

フィードバック

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