앱스토어 심사 거절(애플 리젝) 사유와 구글 플레이 12명·14일 체크리스트
앱 4개를 직접 출시하며 받은 애플 심사 거절 사유(4.8 로그인, 5.1.1 계정 삭제, 2.1 데모 영상, 3.1.1 구매 복원)와 구글 플레이 개인 계정의 테스터 12명·14일 요건을 정리하고, 제출 전에 확인할 체크리스트를 공유합니다.
저희는 앱 네 개를 직접 만들어 App Store와 Google Play에 모두 출시했습니다. 습관 관리 앱 Life-Up, AI 골프 코칭 앱 SwingNote, 경영 게임 OpenTown, 전략 게임 Two Thrones입니다. 네 앱 모두 애플 심사에서 한 번 이상 거절됐습니다. OpenTown과 Two Thrones는 8월 13일에 처음 제출해 8월 29일에야 승인을 받았습니다.
이 글은 그 과정에서 실제로 받은 거절 사유와 고친 방법을 정리한 것입니다. 가이드라인 번호는 애플이 거절 통보에 적어 보낸 번호 그대로입니다.
애플 심사에서 받은 거절 사유
구글 로그인만 있으면 4.8로 거절됩니다
Life-Up, SwingNote, Two Thrones가 같은 사유(4.8 로그인 서비스)로 거절됐습니다. 구글 로그인을 넣었다면 동등한 로그인을 함께 줘야 하는데, 조건 중 하나가 "가입할 때 이메일을 비공개로 유지할 수 있을 것"입니다. 자체 이메일 로그인으로는 이 조건을 채울 수 없어 세 앱 모두 Sign in with Apple을 추가했습니다.
- 버튼은 애플이 제공하는 공식 버튼을 씁니다. 직접 디자인한 버튼은 애플 가이드라인에 어긋날 수 있습니다.
- 서버는 애플이 준 토큰의 서명과 만료를 직접 검증합니다.
계정을 만들 수 있으면 앱 안에서 지울 수도 있어야 합니다
Life-Up은 계정 삭제 기능이 없는 것과 회원가입을 해야만 쓸 수 있는 구조를 함께 지적받았습니다(5.1.1). 계정 삭제를 만들고 가입 없이 쓰는 게스트 모드를 넣어 통과했습니다.
Two Thrones는 삭제 안내 페이지에 "이 주소로 메일을 보내 주세요"만 적어 두었습니다. 애플은 이메일·전화로만 받는 삭제를 인정하지 않기 때문에, 링크만 붙였다면 다음 라운드에서 다시 거절됐을 것입니다. 그래서 앱 안에서 바로 지우는 기능을 만들었습니다. 애플 로그인을 쓰는 앱은 계정을 지울 때 애플 쪽 인증도 해지(revoke)합니다.
"실기기에서 찍은 데모 영상을 보내 주세요" (2.1)
SwingNote는 핵심 기능인 AI 분석을 실제 기기에서 보여 달라는 요청을 받았습니다. 시뮬레이터 녹화는 안 된다고 명시돼 있었습니다. 원인을 찾아보니 iOS에서는 분석 기능이 처음부터 동작하지 않고 있었습니다. 웹뷰 설정에 안드로이드에서만 통하는 옵션만 들어 있었던 것입니다. 안드로이드에서 잘 된다고 iOS에서도 된다는 보장은 없습니다. 실제 아이폰에서 끝까지 눌러 봐야 압니다.
OpenTown과 Two Thrones도 같은 사유로 데모 영상을 요구받았고, Two Thrones에는 가입·로그인·계정 삭제 흐름을 보여 달라는 요청이 적혀 있었습니다.
- 유튜브 '미등록(Unlisted)' 링크로 넣습니다. '비공개(Private)'는 심사자가 열 수 없습니다.
- 게스트가 아니라 로그인한 계정을 지우는 장면까지 찍습니다.
- 심사가 끝날 때까지 영상을 내리지 않습니다.
심사자는 항상 새로 설치한 사람입니다
Two Thrones는 광고 추적 동의 창(ATT)이 몇 판을 플레이한 뒤에만 뜨도록 만들어 두었습니다. 새로 설치한 심사자는 그 창을 볼 수 없었고, "동의 요청을 찾을 수 없다"(2.1)로 거절됐습니다. 첫 실행에 뜨도록 바꿨습니다.
심사 정보에 적는 것도 실제로 눌러 봅니다. 저희는 제출 전에 심사용 데모 계정으로 실제 로그인이 되는지 확인합니다. Two Thrones는 지원 URL을 사이트 첫 주소로 적었다가 '페이지를 찾을 수 없음' 화면이 뜨는 것을 발견하고 실제 문의 페이지 주소로 바꿨습니다.
결제가 있으면 볼 것이 늘어납니다
- 구독 결제 화면에 이용약관·개인정보처리방침 링크가 없음(3.1.2, Life-Up)
- 구독 상품 홍보 이미지에 가격이 들어감(2.3.2, Life-Up·SwingNote). 홍보 이미지는 선택 항목이라 지우면 됩니다.
- 앱이 쓰는 인앱 상품을 앱 버전과 함께 제출하지 않음(2.1(b), OpenTown)
- '구매 복원' 버튼이 없음(3.1.1, OpenTown). 앱을 켤 때 자동으로 복원하는 것은 인정되지 않고, 누르면 복원이 시작되는 별도 버튼이 필요합니다.
AI 기능은 데이터가 어디로 가는지 밝혀야 합니다
SwingNote는 "제3자 AI 서비스에 개인정보를 보내면서 알리지 않고 동의도 받지 않는다"(5.1.1(i)·5.1.2(i))는 지적을 받았습니다. 실제로는 외부 AI 서비스를 쓰지 않고, 스윙 영상도 기기 밖으로 나가지 않습니다. 서버로 무엇을 보내는지 항목별로 답하고, 개인정보처리방침에 AI 처리 내용을 보강했습니다. 원인이 확실하지 않은 것은 답장에 추정으로 적지 않았습니다. 틀린 설명을 보내면 그 설명부터 다시 바로잡아야 합니다.
우리 잘못이 아닐 때도 있습니다
Two Thrones와 OpenTown은 애플 로그인 오류로 여러 차례 거절됐습니다. Two Thrones에는 서명 없이 만든 빌드에서 애플 로그인 권한이 빠진 저희 쪽 실수도 있었지만, 그걸 고친 뒤에도 "가입이 완료되지 않음"이 계속 떴습니다. 코드와 설정을 전부 점검해 애플 서버 쪽 문제로 좁힌 뒤 애플에 신고했습니다. 애플이 고친 뒤에는 저희 쪽 코드를 고치지 않고 통과했습니다. 앱이 로그인 실패 기록을 서버에 남기고 있었기 때문에 원인을 좁힐 수 있었습니다.
구글 플레이: 개인 계정은 테스터 12명·14일부터
개인 유형 개발자 계정으로 새 앱을 정식 출시하려면 먼저 비공개 테스트에서 테스터 12명이 14일 동안 참여해야 합니다. 이 조건을 채워 신청하고 프로덕션 액세스 승인을 받아야 정식 출시가 열립니다. 저희 앱들도 개인 계정이라 이 과정을 거쳤습니다.
- 승인까지 걸린 시간은 달랐습니다. SwingNote는 신청하고 8일 뒤에, Two Thrones는 신청 당일에 승인됐습니다.
- Life-Up은 테스터 모집 앱에서 사람을 모아 요건을 채웠습니다. 이렇게 모은 테스터는 실사용자가 아니므로, 출시 직후 가입자 수를 성과로 읽으면 안 됩니다.
- 외주로 앱을 낼 때는 처음부터 사업자(조직) 유형 계정을 권합니다. 개인 유형이면 이 요건 때문에 출시가 2주 밀립니다. 애플에 회사 이름으로 내려면 D-U-N-S 번호가 필요하고, 발급(무료)에 며칠에서 2주가 걸립니다.
플레이 심사에서 걸린 적도 있습니다. Two Thrones는 로그인 라이브러리가 기본으로 끌어온 Facebook SDK 때문에 광고 ID(AD_ID) 권한이 들어가 심사를 통과하지 못했습니다. 지금은 빌드 전에 그 SDK가 빠졌는지 자동으로 확인합니다.
재제출과 출시 직전에 배운 것
- 심사 노트(App Review Notes)는 4,000자까지입니다. 답변이 길어지면 먼저 길이를 잽니다.
- 거절된 제출건을 급하게 취소하지 않습니다. OpenTown은 취소했다가 함께 실려 있던 인앱 상품이 제출에서 빠져, App Store Connect 웹 화면에서 다시 담아야 했습니다.
- 첫 출시라면 판매 국가·지역을 확인합니다. OpenTown은 국가가 비어 있어 플레이 정식 출시 등록이 한 번 막혔고, App Store에서는 승인을 받고도 '삭제됨'으로 보였습니다.
통과 체크리스트
제출 전에 저희가 보는 목록입니다. 다 채워도 통과가 보장되지는 않지만, 저희가 실제로 걸렸던 지점은 미리 막을 수 있습니다.
로그인·계정
- 소셜 로그인이 있으면 Sign in with Apple도 있다(공식 버튼)
- 회원가입 없이 쓸 수 있는 범위가 있다
- 앱 안에서 계정을 삭제할 수 있다(메일 안내만으로는 부족)
- 계정을 삭제하면 애플 로그인 인증도 해지된다
심사자 입장에서
- 핵심 기능을 실제 아이폰에서 처음부터 끝까지 눌러 봤다
- 권한·추적 동의 창이 새로 설치한 첫 실행에서 보인다
- 심사용 데모 계정으로 실제 로그인이 된다
- 지원 URL과 개인정보처리방침 URL이 제대로 열린다
- 데모 영상은 실기기로 찍었고 유튜브 미등록 링크다
결제
- 구독 결제 화면에 이용약관·개인정보처리방침 링크가 있다
- 구독 홍보 이미지에 가격이 없다
- 인앱 상품을 앱 버전과 함께 제출한다
- 누르면 복원이 시작되는 '구매 복원' 버튼이 있다
데이터·권한
- 외부로 보내는 데이터(특히 AI 처리)를 개인정보처리방침에 적었다
- 쓰지 않는 SDK가 권한(광고 ID 등)을 끌어오지 않는다
구글 플레이·출시
- 개인 계정이면 테스터 12명·14일 일정을 출시 계획에 넣었다
- 판매 국가·지역을 지정했다
앱은 거의 다 됐는데 스토어 등록과 심사에서 멈춰 있다면, 라온몬이 빌드부터 제출과 재심사 대응까지 맡을 수 있습니다. 심사 결과를 약속드릴 수는 없지만, 저희가 겪은 지점부터 차례로 점검해 드립니다. 문의하기