[기타/프로젝트회고] 호러 월드 리빌드 회고: 오래된 앱을 다시 살릴 때 체크한 것들
업데이트:
문제/배경
호러 월드는 오래전에 출시한 앱이라, 최신 Android 정책/SDK/UX 기준으로는 유지보수 난도가 높았습니다.
핵심 목표는 “새 앱 개발”이 아니라 기존 사용자 경험을 보존하면서 운영 가능한 구조로 리빌드하는 것이었습니다.
원인
리빌드가 필요했던 이유는 아래와 같습니다.
- 레거시 UI/구조에서 기능 확장 비용이 큼
- 광고 동의/정책 대응(UMP) 체계 부재
- 읽기 중심 콘텐츠 앱인데 사용자 설정(텍스트 크기/배경 등) 제어가 약함
적용 코드/설정
1) 구조 전환: Compose + MVVM
UI와 상태를 분리해 화면 추가/개선 시 영향 범위를 줄였습니다.
2) 광고 동의와 초기화 분리
AdsConsentManager에서 동의 상태를 먼저 확정하고, 광고 SDK는 그 이후에만 초기화합니다.
_canRequestAds.value = consentInformation.canRequestAds()
if (!_canRequestAds.value) return
MobileAds.initialize(context) {}
3) 전면 광고는 선로딩 후 조건 노출
GalleryInterstitialAdManager를 두어 선로딩(preload)과 실제 표시(showIfAvailable)를 분리했습니다.
if (canRequestAds) interstitialManager?.preload()
val shown = interstitialManager?.showIfAvailable(activity) { /* continue */ } ?: false
4) 읽기 경험 개선
스토리 읽기 화면의 설정(글자 크기/줄간격/배경 어둡기)을 저장형 UX로 정비해 재방문 시 피로를 줄였습니다.
검증 결과
- 광고/정책/콘텐츠 흐름이 충돌하지 않는 운영 구조 확보
- 읽기 중심 UX 개선으로 장문 콘텐츠 소비 안정화
- 이벤트 로그와 설정 저장이 분리되어 추적/수정이 쉬워짐
체크리스트
- 구조 전환 시 도메인 상태와 UI 상태를 분리했는가
- 광고 동의 플로우가 앱 시작 경로에서 일관되게 호출되는가
- 광고 노출 타이밍이 콘텐츠 흐름을 깨지 않는가
- 사용자 설정(텍스트/테마/음소거 등)이 재실행 후 유지되는가
- 정책 문서(개인정보처리방침, app-ads.txt) 링크가 공개 URL로 연결되는가
댓글남기기