[기타/프로젝트회고] 호러 월드 리빌드 회고: 오래된 앱을 다시 살릴 때 체크한 것들

업데이트:



문제/배경

호러 월드는 오래전에 출시한 앱이라, 최신 Android 정책/SDK/UX 기준으로는 유지보수 난도가 높았습니다.
핵심 목표는 “새 앱 개발”이 아니라 기존 사용자 경험을 보존하면서 운영 가능한 구조로 리빌드하는 것이었습니다.

원인

리빌드가 필요했던 이유는 아래와 같습니다.

  1. 레거시 UI/구조에서 기능 확장 비용이 큼
  2. 광고 동의/정책 대응(UMP) 체계 부재
  3. 읽기 중심 콘텐츠 앱인데 사용자 설정(텍스트 크기/배경 등) 제어가 약함

적용 코드/설정

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로 연결되는가

관련 글



다음 읽을거리

관련 허브 페이지에서 같은 주제의 글을 이어서 확인할 수 있습니다.

댓글남기기