iOS セッションリプレイ¶
前提条件¶
- GuanceSDKRUM 設定をセットアップし、初期化していること、および View の監視収集が有効になっていることを確認してください。
- iOS セッションリプレイのバージョンサポート:SDK.Version >= 1.6.0。
- 旧バージョンから SDK 1.6.6 以上にアップグレードする場合、セッションリプレイの製品名が
GuanceSessionReplayに変更されています。移行ガイドを参照してください。 -
ドキュメント上部のバッジに表示されている正式リリースの安定版を優先的に使用することを推奨します。
alpha、betaなどのプレリリース版は推奨しません。 -
先行機能をいち早く統合したい場合、最新機能を確認したい場合、または未正式リリースの変更を追跡したい場合は、GitHub で iOS SDK リポジトリおよび関連の更新ログを参照してください:GuanceCloud/datakit-ios
設定¶
お使いのパッケージマネージャーに応じて、GuanceSDK ライブラリ内の GuanceSessionReplay 機能コンポーネントをプロジェクトにリンクします。
CocoaPods¶
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: すべてのテキスト、入力、タッチ、画像をマスキングします。まもなく非推奨となりますが、互換性は維持されます。 touchPrivacy、textAndInputPrivacy、imagePrivacy を使用して細かいプライバシーレベルを設定することを推奨します。 |
| touchPrivacy | FTTouchPrivacyLevel | いいえ | セッションリプレイにおけるタッチマスキングのプライバシーレベル。デフォルトは FTTouchPrivacyLevelHide です。FTTouchPrivacyLevelShow: すべてのユーザータッチを表示するFTTouchPrivacyLevelHide: すべてのユーザータッチをマスキングする設定後は privacy の設定を上書きします。SDK 1.6.1 以上でサポート |
| textAndInputPrivacy | FTTextAndInputPrivacyLevel | いいえ | セッションリプレイにおけるテキストと入力のマスキングのプライバシーレベル。デフォルトは FTTextAndInputPrivacyLevelMaskAll です。FTTextAndInputPrivacyLevelMaskSensitiveInputs: パスワード入力などの機密性の高い入力を除くすべてのテキストを表示するFTTextAndInputPrivacyLevelMaskAllInputs: UITextField、UISwitch、UISlider などのすべての入力フィールドをマスキングする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 に設定します。
タッチのオーバーライド¶
タッチのプライバシーを上書きするには、ビューインスタンスで sessionReplayPrivacyOverrides.touchPrivacy を使用し、FTTouchPrivacyLevelOverride 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、プロパティを FTTouchPrivacyLevelOverrideNone に設定します。
画像のオーバーライド¶
SDK 1.6.2 以上でサポート
画像のプライバシーを上書きするには、ビューインスタンスで sessionReplayPrivacyOverrides.imagePrivacy を使用し、FTImagePrivacyLevelOverride 列挙型のいずれかの値に設定します。既存のオーバーライドルールを削除するには、プロパティを FTImagePrivacyLevelOverrideNone に設定します。
利用可能な画像オーバーライドレベル:
FTImagePrivacyLevelOverrideMaskNonBundledOnly: SF Symbols および[UIImage imageNamed:]/UIImage(named:)で読み込まれ、アプリにバンドルされている画像のみ記録します。ネットワークダウンロードや実行時に生成された画像はマスキングされます。FTImagePrivacyLevelOverrideMaskAll: すべての画像をマスキングするFTImagePrivacyLevelOverrideMaskNone: ネットワークダウンロードや実行時に生成された画像を含むすべての画像を記録します。画像に機密情報が含まれていないことを確認した上で使用してください。
要素の非表示オーバーライド¶
完全に非表示にする必要がある機密要素については、sessionReplayPrivacyOverrides.hide を使用して設定します。
要素を非表示に設定すると、リプレイでは "Hidden" というプレースホルダーに置き換えられ、その子ビューは記録されません。
注意:ビューを非表示としてマークしても、その要素でのタッチインタラクションの記録は妨げられません。タッチインタラクションを非表示にするには、要素を非表示としてマークすることに加えて、タッチのオーバーライドも使用してください。
WebView セッションリプレイ¶
SDK 1.6.2 以上でサポート
WebView セッションリプレイを使用するには、WebView でアクセスするページに Web 監視 SDK を統合し、WebView でセッションリプレイを有効にする必要があります。