Ultraworked with [Sisyphus] https://github.com/code-yeongyu/oh-my-openagent Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
68 lines
4.3 KiB
Markdown
68 lines
4.3 KiB
Markdown
# 20260428 채팅 탭 Yandex 배너 추가
|
|
|
|
## 작업 체크리스트
|
|
- [x] 기존 `YandexInlineBannerView` 재사용 패턴과 채팅 화면 구조 확인
|
|
- [x] 채팅 화면용 banner placement 3종 추가
|
|
- [x] 페이지·위치별 ad unit 상수 3종을 운영/디버그 Constants에 추가
|
|
- [x] `CharacterView` 최근 대화한 캐릭터/인기 캐릭터 사이 배너 추가
|
|
- [x] `OriginalTabView` 최상단 배너 추가 및 스크롤 동작 유지
|
|
- [x] `TalkView` 최상단 배너 추가 및 스크롤 동작 유지
|
|
- [x] 빌드 및 검증 기록 추가
|
|
|
|
## 작업 기준
|
|
|
|
- 공용 광고 지원:
|
|
- `SodaLive/Sources/Common/YandexAdSupport.swift`
|
|
- ad unit 상수:
|
|
- `SodaLive/Sources/Utils/Constants.swift`
|
|
- `SodaLive/Sources/Debug/Utils/Constants.swift`
|
|
- 수정 대상:
|
|
- `SodaLive/Sources/Chat/Character/CharacterView.swift`
|
|
- `SodaLive/Sources/Chat/Original/OriginalTabView.swift`
|
|
- `SodaLive/Sources/Chat/Talk/TalkView.swift`
|
|
|
|
## QA 기준
|
|
|
|
- `CharacterView`에서 Yandex 배너가 최근 대화한 캐릭터 섹션 아래, 인기 캐릭터 섹션 위에 표시된다.
|
|
- `CharacterView`에서 최근 대화한 캐릭터가 없어도 해당 위치의 Yandex 배너는 표시된다.
|
|
- `OriginalTabView`에서 Yandex 배너가 최상단에 표시되고, 아래 작품 리스트를 스크롤할 때 함께 이동한다.
|
|
- `TalkView`에서 Yandex 배너가 최상단에 표시되고, 아래 톡 리스트를 스크롤할 때 함께 이동한다.
|
|
- 기존 무한 스크롤과 `onAppear` 기반 데이터 로딩 동작은 유지된다.
|
|
|
|
## 구현 메모
|
|
|
|
- 기존 `YandexInlineBannerView`를 그대로 재사용한다.
|
|
- ad unit id는 기존과 동일하게 페이지·위치별로 별도 상수를 추가한다.
|
|
- `CharacterView`의 기존 상단 캐릭터 프로모션 배너(`AutoSlideCharacterBannerView`)는 유지하고, Yandex 배너만 최근/인기 사이에 추가한다.
|
|
|
|
## 검증 기록
|
|
|
|
- 2026-04-28 / 사전 조사
|
|
- 무엇: 공용 Yandex 배너 지원 코드와 채팅 3개 화면의 스크롤 구조를 확인했다.
|
|
- 왜: 새 광고 뷰를 만들지 않고 최소 변경으로 정확한 위치에 삽입하기 위해서다.
|
|
- 어떻게:
|
|
- `YandexAdSupport.swift`, `Constants.swift`, `Debug/Utils/Constants.swift`를 확인했다.
|
|
- background `explore`로 채팅 3개 화면 구조와 기존 광고 배치 패턴을 조사했다.
|
|
- 결과:
|
|
- 공용 `YandexInlineBannerView` 재사용 가능
|
|
- 채팅 화면용 placement 3종과 화면 삽입만 추가하면 되는 범위로 확정
|
|
|
|
- 2026-04-28 / 구현 및 빌드 검증
|
|
- 무엇: 채팅 3개 화면용 Yandex 배너 placement/ad unit 상수를 추가하고, 지정 위치에 배너를 삽입했다.
|
|
- 왜: 기존 광고 인프라를 유지하면서 요청한 화면과 위치에만 최소 변경으로 광고를 노출하기 위해서다.
|
|
- 어떻게:
|
|
- `SodaLive/Sources/Common/YandexAdSupport.swift`에 `chatCharacterList`, `chatOriginalTabTop`, `chatTalkTabTop` placement를 추가했다.
|
|
- `SodaLive/Sources/Utils/Constants.swift`, `SodaLive/Sources/Debug/Utils/Constants.swift`에 페이지·위치별 ad unit 상수 3종을 추가했다.
|
|
- `CharacterView`에는 최근 대화한 캐릭터/인기 캐릭터 사이에 배너를 추가했다.
|
|
- `OriginalTabView`에는 `ScrollView` 내부 최상단에 배너를 추가하고 그리드와 함께 스크롤되도록 유지했다.
|
|
- `TalkView`에는 `ScrollView` 내부 최상단에 배너를 추가하고 리스트와 함께 스크롤되도록 유지했다.
|
|
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
|
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
|
- 변경 파일 `lsp_diagnostics`를 확인했다.
|
|
- 결과:
|
|
- `SodaLive-dev` Debug 빌드 성공
|
|
- `SodaLive` Debug 빌드 성공
|
|
- `Constants.swift`, `Debug/Utils/Constants.swift`는 LSP 진단 없음
|
|
- 나머지 SwiftUI/Yandex 파일은 SourceKit 단독 해석 환경에서 프로젝트 심볼과 `YandexMobileAds` 모듈을 해석하지 못하는 환경성 오류가 있었지만, 실제 `xcodebuild` 실컴파일은 두 스킴 모두 통과했다.
|
|
- 이 CLI 세션에서는 iOS 시뮬레이터 UI 자동화 경로가 없어 실제 화면 스크롤 수동 검증은 수행하지 못했고, 대신 두 스킴 실컴파일 성공으로 변경 무결성을 확인했다.
|