일기 slecs

스토어 리뷰 요청사항 반영한 빌드 업로드

목차

앱 스토어 리뷰팀의 피드백에 따라 iOS 빌드를 재준비했다. Apple 로그인 capability를 추가하고, Google 관련 설정을 plist에 명시해야 했다. 요청사항 반영 후 1.0.0+6 버전으로 다시 배포했다.

앱 스토어 리젝션의 원인들

모바일 앱을 스토어에 올리면 리뷰 프로세스를 거친다. 가끔은 요청사항과 함께 리젝되기도 한다. 이번엔 몇 가지 누락이 있었다:

  • Apple 로그인 capability 미선언: 다른 소셜 로그인(Google, 카카오 등)을 제공할 때는 Apple 로그인도 함께 제공해야 한다. 특히 한국을 포함한 여러 지역의 앱 스토어 정책이다.
  • Google 설정 명시 부족: Google API를 쓰는 경우, 이를 앱 메타데이터와 설정 파일에 명시적으로 기록해야 한다.

이런 지적은 "기술적 구현은 돼 있는데 왜?"라는 반응을 받기 쉽다. 하지만 스토어 관점에선 다르다. 앱이 어떤 기능을 사용하고, 어떤 권한을 요청하며, 누구의 서비스와 연동되는지를 정확히 알아야 리뷰를 승인할 수 있다.

변경 파일과 역할

파일 역할 이번 변경
ExportOptions.plist iOS 빌드·배포 설정 Apple 로그인 entitlement 추가, capability 명시
pubspec.yaml Flutter 의존성·메타데이터 Google 패키지 버전 명시, iOS 설정 업데이트

ExportOptions.plist는 Xcode가 앱을 서명하고 배포할 때 읽는 파일이다. 여기엔 프로비저닝 프로필, 서명 인증서, 그리고 app capability(로그인, 푸시 알림 등)가 명시된다. 이를 잘못 설정하면 앱이 특정 기능을 쓸 수 없거나, 빌드 자체가 실패한다.

pubspec.yaml는 Flutter 프로젝트의 중앙 설정 파일이다. 여기서 Google 관련 패키지의 버전을 명시하고, iOS 최소 배포 버전 같은 플랫폼 특화 설정도 한다.

버전 관리: 1.0.0 vs +6

version string이 1.0.0+6이면:

  • 1.0.0: 사용자가 보는 앱 버전 (공식 릴리스 버전)
  • +6: 빌드 넘버 (같은 공식 버전을 몇 번 빌드했는지 기록)

리젝 후 재빌드할 때마다 빌드 넘버를 올린다. 스토어 제출 히스토리, QA 프로세스, 그리고 팀 간 소통에서 "어느 빌드를 말하는 건지" 애매해지지 않도록 한다.

배운 점: 선언(Declaration)의 중요성

처음엔 "구현되어 있으니 작동하겠지"라고 생각했다. 하지만 스토어 리뷰는 그게 아니다. 이건 스토어와의 계약이다:

  • 앱이 무엇을 하는가
  • 어떤 권한을 요청하는가
  • 어떤 서드파티 서비스를 연동하는가
  • 프라이버시 정책과 일치하는가

이걸 정확히 선언하지 않으면, 기술적 구현이 완벽해도 리뷰를 통과하지 못한다.

앞으로는 초기부터 "리뷰 가이드 체크리스트"를 만들 계획이다. 기능 구현만큼이나 "앱이 뭘 하는지 정확히 선언하기"를 신경 써야 한다. 재빌드는 번거롭지만, 한 번의 세심함으로 몇 번의 리젝을 줄 수 있다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.