Files
sodalive-ios/docs/20260328_방장캡쳐녹화허용.md

2.9 KiB

20260328 방장 캡쳐/녹화 허용

작업 체크리스트

  • LiveRoomViewV2 캡쳐/녹화 보호 적용 지점 재확인
  • 현재 사용자 방장 여부 계산 프로퍼티 추가
  • 방장일 때 ScreenCaptureSecureContainer 미적용 분기 추가
  • 방장일 때 캡쳐 감지 오버레이/강제 음소거 로직 비활성화
  • LSP/빌드/테스트 검증 수행
  • 검증 결과 기록

수용 기준 (Acceptance Criteria)

  • 방장(creatorId == currentUserId)은 라이브룸 화면에서 스크린샷/화면 녹화가 가능하다. (코드 경로 기준)
  • 비방장(게스트/리스너/스피커)은 기존 캡쳐/녹화 보호가 유지된다.
  • 캡쳐 감지 시 비방장에게만 검정 오버레이/강제 음소거가 적용된다.
  • 변경 파일 LSP 진단 오류가 없다.
  • SodaLive, SodaLive-dev Debug build가 성공한다.

검증 기록

1차 검증 (2026-03-28)

  • 무엇/왜/어떻게:
    • 무엇: 방장만 캡쳐/녹화 보호를 우회하도록 조건 분기를 적용.
    • 왜: 요청사항(방장 캡쳐·녹화 허용) 충족과 비방장 보호 유지.
    • 어떻게: ScreenCaptureSecureContainer를 런타임에서 secure on/off 가능한 구조로 확장하고, 방장 여부에 따라 캡쳐 보호 동기화를 분기했다.
  • 실행 명령:
    • lsp_diagnostics(filePath: /Users/klaus/Develop/sodalive/iOS/SodaLive/SodaLive/Sources/Live/Room/V2/LiveRoomViewV2.swift, severity: all)
    • xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build && xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build
    • grep("\\*\\* BUILD SUCCEEDED \\*\\*", /Users/klaus/.local/share/opencode/tool-output/tool_d340d3dc1001ZldmuCAgiYN1ly)
    • xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test; xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test
    • grep("shouldEnforceScreenCaptureProtection|syncScreenCaptureProtectionState", LiveRoomViewV2.swift)
  • 결과:
    • lsp_diagnostics: No diagnostics found
    • 빌드: SodaLive, SodaLive-dev 모두 ** BUILD SUCCEEDED **
    • 테스트: Scheme SodaLive is not currently configured for the test action., Scheme SodaLive-dev is not currently configured for the test action.
    • 수동 QA(코드 경로):
      • 방장/비방장 분기 확인: ScreenCaptureSecureContainer(isSecureModeEnabled: shouldEnforceScreenCaptureProtection)
      • 방장 동기화 확인: syncScreenCaptureProtectionState()에서 방장인 경우 isScreenCaptureProtected = false + releaseForcedCaptureMute()
      • 비방장 보호 유지 확인: 비방장인 경우 applyScreenCaptureProtection(isCaptured: UIScreen.main.isCaptured)
    • 제한사항: 현재 CLI/헤드리스 환경에서 실제 기기 스크린샷/화면녹화 버튼 조작 E2E는 불가하여, 실기기 최종 확인이 추가로 필요.