WebSocket 핸드셰이크 요청의 RUM Resource 수집 지원이 추가되었습니다. 데이터에 resource_type=websocket, resource_websocket_collection_level=handshake, resource_websocket_handshake_state(success, rejected, failed)가 추가됩니다.
FTRumConfig.issueDataProvider가 추가되어 자동 수집된 Crash 및 ANR RUM Error에 검증된 사용자 정의 필드와 히스토리 컨텍스트를 첨부할 수 있습니다.
일반적인 AppKit 뷰와 컨트롤을 포괄하는 macOS Session Replay 녹화 지원이 추가되었습니다.
macOS 앱 시작 Action 자동 수집이 추가되었고, macOS 기본 service 및 Log source 태그가 통일되었습니다.
Session Replay 리소스 검사 및 업로드가 RUM 컨텍스트 연결을 지원합니다. FTSessionReplayConfig.enableLinkRUMKeys를 통해 전달할 RUM globalContext 필드를 선택하여, 동일한 리소스가 서로 다른 연결 컨텍스트에서 올바르게 라우팅되고 독립적으로 보존되며 중복 제거되도록 보장합니다.
대체(fallback) View, 앱 시작, 첫 프레임 추적, 지연된 초기 Action, Session 만료 등의 시나리오에서 RUM 라이프사이클 처리가 개선되었습니다.
UIKit 및 SwiftUI 자동 수집 RUM View의 loading_time 측정이 개선되어 프리렌더링 및 프리로드 단계의 유휴 시간이 제외됩니다.
마이그레이션 변경: CocoaPods 및 Swift Package Manager 배포 제품이 FTMobileSDK 시리즈에서 GuanceSDK 시리즈로 변경되었습니다. GuanceSDK, GuanceWidgetExtension, GuanceSessionReplay을 사용하세요. CocoaPods 별칭 GuanceSDK/Extension 및 GuanceSDK/FTSessionReplay는 계속 사용할 수 있습니다. 기존 프로젝트 업그레이드는 마이그레이션 가이드를 참조하세요.
실험적 Session Replay 히트맵 연결 기능이 추가되었으며, FTSessionReplayConfig.enableHeatmap으로 활성화할 수 있습니다. 이 기능은 자동 수집된 UIKit Action에만 연결되며 일부 UIKit Action은 Heatmap을 지원하지 않을 수 있습니다. SwiftUI Action은 자동 수집을 지원하지 않으므로 이 기능으로 히트맵을 연결할 수 없습니다.
시스템 compression 및 zlib 헤더 파일이 추가되었습니다.
URLSession Resource 안정성이 개선되어 비동기 처리 중 request 및 trace 데이터를 유지하고 캐시된 응답 본문 크기를 제한하여 OOM 위험을 낮춥니다.
RUM CPU 계산, 앱 시작, 앱 상태, Session 타임아웃, 크래시 컨텍스트 및 활성 View 컨텍스트 처리 문제가 수정되었습니다.
ANR 안정성이 개선되어 앱이 백그라운드로 전환될 때 SQLite VACUUM 실행을 방지하고 전체 스레드 백트레이스 수집을 재시도합니다.
콜드 스타트 Action에 app_launch_type 필드가 추가되어 포그라운드 시작과 백그라운드 시작을 구분합니다.
블랙리스트 필터링 기능이 추가되어 로컬 캐시에 쓰기 전에 Log 및 RUM 데이터를 필터링할 수 있습니다. 규칙은 FTMobileConfig.dataFilters를 통해 앱 내에서 구성하거나 Guance 워크스페이스의 블랙리스트에서 자동으로 가져올 수 있으며 두 방식이 동시에 적용됩니다. 이 기능은 기본적으로 활성화되어 있으며 FTMobileConfig.enableDataFilter = NO로 SDK 측 필터링을 끌 수 있습니다. 필터 규칙은 lineDataModifier 이후에 실행됩니다.
업로드 Worker 종료 격리, 업로드 콜백 동기화 및 RUM 업로드 동작이 개선되어 중복 업로드, 만료된 항목의 재시도 루프, 업로드 실행 충돌을 방지하고 업로드 시 중복 View 데이터를 건너뜁니다.
RUM 플레이스홀더 View 처리가 대체(fallback) View 해석으로 변경되어 원본 View를 사용할 수 없을 때 View 추적 일관성이 향상되었습니다.
nil, 빈 값, 사용자 정보 업데이트 시나리오에서 사전 정의된 속성 Tag 처리 방식이 개선되었습니다.
WebView Session Replay를 지원하는 Session Replay 기능이 추가되었습니다.
Session Replay와 RUM 컨텍스트 연결 기능이 추가되어 WebView 컨테이너와 로드된 HTML 콘텐츠의 컨텍스트를 연결할 수 있습니다.
Session Replay 오류 샘플링 기능이 추가되었고, 원격 구성을 통해 Session Replay를 동적으로 제어할 수 있습니다.
Session Replay 이미지 리소스 업로드 기능이 추가되었습니다.
Session Replay는 touchPrivacy, textAndInputPrivacy, imagePrivacy를 통해 터치, 텍스트 및 입력, 이미지의 개인정보 보호 설정을 구성할 수 있으며, sessionReplayPrivacyOverrides를 통해 개별 UIView에 뷰 단위 개인정보 보호 오버라이드를 설정할 수 있습니다.
RUM Resource 데이터 필드로 resource_first_byte_time, resource_dns_time, resource_download_time, resource_connect_time, resource_ssl_time, resource_redirect_time가 추가되었습니다. Guance에서 Resource 소요 시간을 강화된 형태로 표시할 수 있으며, 애플리케이션 성능 모니터링(APM) 플레임 그래프와 시간 축을 정렬할 수 있습니다.
FTMobileConfig.enableDataIntegerCompatible이 기본적으로 활성화됩니다.
매크로 FT_DISABLE_SWIZZLING_RESOURCE로 SDK 내부의 URLSession Method Swizzling을 비활성화할 수 있습니다.
FTRUMConfig.rumCacheLimitCount로 RUM 최대 캐시 항목 수를 제한할 수 있으며, FTRUMConfig.rumDiscardType으로 폐기 정책을 설정할 수 있습니다.
FTMobileConfig.enableLimitWithDbSize로 총 캐시 크기를 제한할 수 있습니다. 활성화하면 FTLoggerConfig.logCacheLimitCount 및 FTRUMConfig.rumCacheLimitCount는 더 이상 적용되지 않습니다. FTMobileConfig.dbDiscardType으로 DB 폐기 정책을, FTMobileConfig.dbCacheLimit으로 DB 캐시 제한 크기를 설정할 수 있습니다.