5.1 KiB
5.1 KiB
20260420 무료 라이브 라이트 팝업 광고 적용
작업 체크리스트
- 관련 모듈과 기존 패턴, 무료 라이브 판별값, 광고 연동 조건을 조사한다.
QA:LiveRoomActivity,GetRoomInfoResponse,GetRoomDetailResponse, Daro 공식 Light Popup 가이드에서 조건 근거를 확인해야 한다. - 무료 라이브 라이트 팝업 노출 정책 테스트를 추가한다.
QA: 비방장 + 무료 + 미시도 조합만 허용되고, 나머지 조합은 모두 차단되어야 한다. LiveRoomActivity와LiveRoomViewModel에 Light Popup 연동을 최소 변경으로 구현한다.
QA: 방장이 아니고 무료 라이브일 때만 Daro Light Popup 시도 경로가 존재해야 하며, 같은 액티비티 인스턴스에서 중복 시도되지 않아야 한다.- Ad Unit ID를 추후 입력할 수 있도록 단일 수정 지점을 만든다.
QA: 사용자가 수정해야 하는 상수 위치를 코드에서 즉시 확인할 수 있어야 한다. - 변경 사항을 진단하고 관련 Gradle 검증을 수행한 뒤 결과를 기록한다.
QA: 관련 단위 테스트와:app:assembleDebug결과를 문서 하단 검증 기록에 남겨야 한다.
구현 메모
LiveRoomActivity의GetRoomInfoResponse에는creatorId는 있지만price/isPaid가 없어 무료 여부를 직접 판별할 수 없다.- 무료 여부는 기존
LiveRepository.getRoomDetail(roomId, token)경로의GetRoomDetailResponse.price로 판별한다. - 유료 라이브 입장 여부를 뜻하는
GetRoomDetailResponse.isPaid는 무료 판별값이 아니므로 광고 게이트에는 사용하지 않는다. - Daro SDK는 이미 앱 전역에서 초기화되어 있으므로
LiveRoomActivity에는 Light Popup 로드/표시 로직만 추가한다. - Ad Unit ID와 placement는
LiveRoomActivitycompanion object의 상수로 두어 사용자가 추후 값만 교체할 수 있게 한다.
검증 기록
- 2026-04-20
- 무엇:
LiveRoomActivity에 무료 라이브 비방장 전용 Daro Light Popup을 추가하기 위한 조건, SDK 사용 방식, 최소 수정 범위를 조사했다. - 왜: 현재 액티비티 응답에는 무료/유료 필드가 없어 별도 상세 응답 확인이 필요하고, Daro Light Popup은 공식 클래스/콜백명을 확인한 뒤 연결해야 하기 때문이다.
- 어떻게:
- 조사 파일:
app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt,app/src/main/java/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt,app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/GetRoomDetailResponse.kt,app/src/main/java/kr/co/vividnext/sodalive/mypage/MyPageFragment.kt,app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt - 조사 문서:
https://guide.daro.so/ko/sdk-integration/android/ad-formats/lightpopup - 확인 결과: 비방장 조건은
creatorId != SharedPreferenceManager.userId, 무료 조건은GetRoomDetailResponse.price == 0, SDK 타입은DaroLightPopupAdUnit,DaroLightPopupAdLoader,DaroLightPopupAdListener경로로 확정했다.
- 조사 파일:
- 무엇:
- 2026-04-20
- 무엇:
LiveRoomActivity에 무료 라이브 비방장 전용 Daro Light Popup 시도 경로를 추가하고, Ad Unit ID 입력 위치를 companion object 상수로 고정했다. - 왜: 현재
GetRoomInfoResponse만으로는 무료 여부를 알 수 없어 별도 상세 조회가 필요했고, 사용자가 나중에 광고 단위 ID만 안전하게 교체할 수 있어야 했기 때문이다. - 어떻게:
- 수정 파일:
app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt,app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt,app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomDaroLightPopupPolicy.kt,app/src/test/java/kr/co/vividnext/sodalive/live/room/LiveRoomDaroLightPopupPolicyTest.kt,docs/20260420_무료라이브라이트팝업광고적용.md - Ad Unit ID 위치:
app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt의DARO_LIGHT_POPUP_AD_UNIT_KEY - 실행 명령:
./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.live.room.LiveRoomDaroLightPopupPolicyTest" - 결과: 성공. 비방장/무료/중복시도 조건 테스트가
BUILD SUCCESSFUL로 통과했다. - 실행 명령:
./gradlew :app:assembleDebug - 결과: 성공. debug APK가
BUILD SUCCESSFUL로 생성됐다. - 실행 명령:
./gradlew :app:ktlintCheck - 결과: 실패. 이번 변경과 무관한 기존 파일(
SodaLiveApp.kt, 기존LiveRoomActivity.kt누적 포맷 위반) 때문에:app:ktlintMainSourceSetCheck가 실패했다. - 진단 도구: Kotlin(
.kt)용 LSP 서버 미구성으로 변경 Kotlin 파일의lsp_diagnostics는 실행 불가였고, Markdown 문서는 진단 이슈가 없었다. - 실행 명령:
adb devices,adb devices -l,./gradlew :app:installDebug - 결과: 장치 연결 상태가 일시적으로 변동됐고 최종적으로 연결된 기기가 없어
installDebug수동 QA를 완료하지 못했다. 따라서 실기기 광고 노출 검증은 [blocked] 상태다.
- 수정 파일:
- 무엇: