App Store 5.1.1 가이드라인 리젝 대응기: SwiftUI Repository 패턴으로 게스트 기능 구현하기
프론트엔드
App Store 5.1.1 가이드라인 리젝 대응기: SwiftUI Repository 패턴으로 게스트 기능 구현하기
두줄요약
App Store 5.1.1 리젝을 계기로 SwiftUI 앱에 게스트 모드를 설계하고 Repository 패턴과 DI Container를 도입했습니다. Mock 데이터와 화면 분리를 통해 유지보수성과 확장성을 함께 확보했습니다.
문제 상황
- App Store 5.1.1 가이드라인으로 인해 로그인 없이 앱 탐색이 가능해야 하는 리젝 발생
- 기존 SwiftUI 화면과 ViewModel이 API 서비스에 강하게 결합돼 if문만으로는 게스트 모드 적용이 어려운 상태
- 게스트 모드와 로그인 모드 사이에서 401 처리, Mock 데이터 제공, 장바구니 데이터 전환 문제가 함께 존재
해결 방법
- ViewModel과 네트워크 호출 사이에 Repository 패턴을 두어 데이터 출처 분리
- DI Container로 isGuestMode에 따라 NetworkService와 MockNetworkDataSource를 교체
- Mock 데이터에 네트워크 지연을 넣어 실제 API처럼 동작하게 구성
적용해볼 점
- 로그인/게스트 같은 런타임 모드는 분기보다 의존성 교체 방식으로 처리하는 설계 고려
- 화면 단위 if 분기보다 로그인용 화면과 게스트용 화면을 분리해 유지보수성 확보
- 개발 환경과 모드를 배너로 명확히 표시해 실수 방지
