Android 세션 리플레이¶
전제 조건¶
- FTSdk RUM 설정을 구성 및 초기화하고 View 모니터링 수집을 활성화했는지 확인하세요.
- Android 세션 리플레이는
ft-sdk:1.7.0이상 버전이 필요합니다. ft-session-replay와ft-session-replay-material은 동일한 버전 번호를 사용해야 합니다.ft-sdk1.7.2 이상 버전은 더 이상ft-session-replay에 강제로 의존하지 않습니다. 세션 리플레이를 활성화해야 하는 경우에만ft-session-replay및 관련 확장 종속성을 추가로 포함해야 합니다.-
문서 상단의 배지에 표시된 정식 출시 안정 버전을 우선 사용하는 것이 좋으며,
alpha,beta등의 사전 출시 버전은 더 이상 사용하지 않는 것이 좋습니다. -
향후 기능을 미리 적용하거나, 최신 기능을 확인하거나, 아직 정식 출시되지 않은 변경 사항을 추적하려면 GitHub에서 Android SDK 저장소 및 관련 변경 로그를 확인하세요: GuanceCloud/datakit-android
Android 히트맵(실험적 기능)
Android 히트맵을 사용하려면 ft-sdk >= 1.7.4와 ft-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]'
// 세션 리플레이 기능을 활성화해야 하는 경우
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay:[session_replay_version]'
// 세션 리플레이에서 material 컴포넌트 지원이 필요한 경우
implementation 'com.cloudcare.ft.mobile.sdk.tracker.agent:ft-session-replay-material:[session_replay_version]'
// 세션 리플레이에서 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_id,session_id,view_id등의 컨텍스트가 이미 설정되어 있도록 하는 것이 좋습니다.
코드 호출¶
| 메서드명 | 타입 | 필수 | 의미 |
|---|---|---|---|
| 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입니다. 곧 폐기 예정이며, 호환성을 위해 계속 사용할 수 있지만 setTouchPrivacy, setTextAndInputPrivacy를 우선 사용하여 마스킹을 설정하는 것이 좋습니다 |
| 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-alpha40, ft-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-alpha40,ft-session-replay>= 0.1.3-alpha14
이미지 프라이버시를 재정의하려면 뷰 인스턴스에서 PrivacyOverrideExtensions.setSessionReplayImagePrivacy(View,ImagePrivacy)를 사용하여 ImagePrivacy 열거형의 값으로 설정합니다. 기존 재정의 규칙을 제거해야 하는 경우 속성을 null로 설정하면 됩니다.
텍스트 및 입력 재정의¶
텍스트 및 입력 프라이버시를 재정의하려면 뷰 인스턴스에서 PrivacyOverrideExtensions.setSessionReplayTextAndInputPrivacy(View,TextAndInputPrivacy)를 사용하여 TextAndInputPrivacy 열거형의 값으로 설정합니다. 기존 재정의 규칙을 제거해야 하는 경우 속성을 null로 설정하면 됩니다.
터치 재정의¶
터치 프라이버시를 재정의하려면 뷰 인스턴스에서 PrivacyOverrideExtensions.setSessionReplayTouchPrivacy(View,TouchPrivacy)를 사용하여 TouchPrivacy 열거형의 값으로 설정합니다. 기존 재정의 규칙을 제거해야 하는 경우 속성을 null로 설정하면 됩니다.
요소 숨김 재정의¶
완전히 숨겨야 하는 민감한 요소의 경우 PrivacyOverrideExtensions.setSessionReplayHidden(View,Boolean)을 사용하여 설정합니다.
요소를 숨김으로 설정하면 리플레이에서 "Hidden"이라는 플레이스홀더로 대체되고 하위 뷰는 기록되지 않습니다.
참고: 뷰를 숨김으로 표시한다고 해서 해당 요소에서 터치 상호 작용이 기록되지 않는 것은 아닙니다. 터치 상호 작용을 숨기려면 요소를 숨김으로 표시하는 것 외에도 터치 재정의를 사용하세요.
WebView 세션 리플레이¶
ft-session-replay 0.1.3-alpha11, ft-sdk 1.7.0-alpha36 이상 버전에서 지원
WebView 세션 리플레이를 사용하려면 WebView 액세스 페이지에 웹 모니터링 SDK를 통합하고 WebView에서 세션 리플레이를 활성화해야 합니다.
Tencent WebView X5 지원¶
Jetpack Compose 지원¶
ft-session-replay-compose와ft-session-replay는 동일한 버전 번호를 유지합니다.
Android 세션 리플레이는 Jetpack Compose UI의 수집 및 리플레이를 지원합니다. Compose 페이지를 사용할 때는 Compose 확장 종속성을 추가로 포함하고 FTSessionReplayConfig에 ComposeExtensionSupport를 추가해야 합니다.
종속성 추가¶
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 리플레이는 시맨틱 노드와 컴포넌트 매핑에 의존하므로 픽셀 단위의 완벽한 복원을 보장하지 않습니다.
- 현재 일반 텍스트, 입력 상자, 이미지, 버튼, 스위치, 슬라이더, 라디오 버튼, 체크박스, Tab 및 컨테이너 클래스 컴포넌트의 리플레이를 지원합니다.
Brush배경은 현재 지원되지 않습니다. 예를 들어 선형 그라데이션, 방사형 그라데이션 등의 배경은 원래 그라데이션 효과로 복원되지 않습니다. 주요 데모 영역에서는 단색 배경을 우선 사용하는 것이 좋습니다.