앱 심사 거절(Reject) 피하는 가이드 - 사람이 검수한다는 사실
1. 프롤로그 - "내 앱이 스팸이라니!"
첫 앱 출시의 부푼 꿈을 안고 '심사 제출(Submit)' 버튼을 눌렀습니다. 일주일 뒤, 애플로부터 메일이 왔습니다.
Guideline 4.3 - Design - Spam
"스팸? 내가 만든 게 스팸이라고?" 열심히 만든 기능을 '복제된 껍데기 앱' 취급하는 피드백에 멘탈이 나갔습니다. 구글링을 해보니 저만 그런 게 아니더군요. 수많은 개발자들이 "애플 놈들 갑질이다" 하며 분노하고 있었습니다.
하지만 냉정하게 생각해보니, 저는 "백화점(App Store)의 입점 규칙"을 전혀 모르고 무작정 가판대를 펴려고 했던 셈이었습니다. 명품관 입점을 원하면서 동대문 시장처럼 물건을 입구에 진열했던 것이죠.
이 글은 제가 10번 넘게 리젝을 당하며 몸으로 배운 "애플/구글이 원하는 앱의 기준"과 "리젝 피하는 법", 그리고 "출시 후 관리(Vitals)"를 정리한 노트입니다.
2. 기본 마인드셋 - 백화점 vs 시장
앱스토어와 구글 플레이를 이해하려면 이 비유가 가장 적절합니다.
- 웹(Web): 재래시장. 누구나 아무 데나 자리를 깔고 물건을 팔 수 있습니다. 규칙이 별로 없습니다.
- 앱스토어(App Store): 명품 백화점. 입점 심사가 까다롭습니다. 인테리어(UI/UX)가 구리면 안 받아줍니다. 짝퉁(저작권 침해)은 절대 안 됩니다. 결제는 반드시 백화점 카운터(In-App Purchase)에서 해야 하고 수수료를 냅니다.
애플은 자신들의 스토어가 "프리미엄 공간"으로 남길 원합니다. 그래서 "사용자 경험(UX)을 해치거나", "돈이 안 되거나", "법적 문제가 있는" 앱을 병적으로 싫어합니다. 이 멘탈 모델을 장착하고 가이드라인을 보면 모든 게 이해됩니다.
3. 주요 리젝 사유와 대응법 (Best 5)
제가 겪은, 그리고 주변에서 가장 많이 겪는 리젝 사유 5가지와 그 구체적인 해결책입니다.
1) Guideline 4.3 - Design - Spam (스팸 및 복제)
- 상황: "이 앱은 웹사이트를 그대로 웹뷰(WebView)로 감싸기만 했네요. 앱만의 기능이 없습니다."
- 이유: 애플은 웹으로도 충분한 걸 굳이 앱으로 만드는 걸 싫어합니다. 앱스토어 품질 저하의 주범으로 봅니다.
- 해결책:
- Native 기능 추가: 푸시 알림(Notification), 카메라 연동, 위치 기반 기능, 햅틱 피드백 등을 넣어서 "이건 앱이어야만 해"라고 어필해야 합니다.
- UX 개선: 햄버거 메뉴 대신 하단 탭 바(Tab Bar)를 쓰는 등 '앱스러운' 네비게이션을 적용하세요. 로딩 화면(Spinner)도 네이티브로 구현해야 합니다.
2) Guideline 5.1.1 - Data Collection and Storage (개인정보)
- 상황: "왜 회원가입 할 때 전화번호를 수집해? 기능이랑 무슨 상관이야?"
- 이유: 최소한의 정보만 수집해야 합니다. GDPR 이후로 더 엄격해졌습니다.
- 해결책:
- 권한 요청 명분: 카메라 권한을 요청할 때 "프로필 사진 등록을 위해 필요합니다"라고 구체적으로 명시해야 합니다(
Info.plist - Privacy Camera Usage Description). 단순히 "카메라 권한이 필요합니다"라고 쓰면 리젝입니다. - 최근 이슈 (Privacy Manifest): 2024년 봄부터 필수입니다. 앱이 사용하는 서드파티 라이브러리(Alamofire, Firebase, Realm 등)가 어떤 정보를 수집하는지
PrivacyInfo.xcprivacy파일에 명시해야 합니다. 이거 없으면 아예 심사 제출 버튼이 비활성화됩니다.
- 권한 요청 명분: 카메라 권한을 요청할 때 "프로필 사진 등록을 위해 필요합니다"라고 구체적으로 명시해야 합니다(
3) Guideline 3.1.1 - In-App Purchase (인앱 결제)
- 상황: "디지털 콘텐츠(전자책, 강의, 구독권)를 파는데 왜 PG사(아임포트, 토스) 결제창을 띄워? 애플 수수료(30%) 내기 싫어서지?"
- 절대 원칙: 디지털 상품은 무조건 애플 인앱 결제(IAP)를 써야 합니다.
- 함정 (Donation): "개발자에게 커피 사주기(후원)" 버튼도 디지털 콘텐츠(감사의 표시)로 간주되어 IAP를 써야 합니다.
- 예외: 쿠팡, 배달의민족, 우버처럼 실물 상품/서비스를 파는 경우는 PG사 결제가 허용(아니 필수로 권장)됩니다.
4) Guideline 2.1 - App Completeness (완성도)
- 상황: "버튼 눌렀는데 '준비 중입니다(Coming Soon)'라고 뜨네요? 베타 버전은 TestFlight에서나 하세요."
- 이유: 미완성 앱은 백화점의 격을 떨어뜨립니다.
- 해결책:
- "준비 중" 메뉴는 아예 숨기세요. 코드로 주석 처리하고 제출하세요.
- 데모 계정: 가입용 테스트 계정 아이디/비번을 심사 제출란에 꼭 적으세요. 심사위원이 회원가입하다가 인증번호 안 날아오면 바로 리젝 놓습니다.
5) Guideline 5.2 - Intellectual Property (지적 재산권)
- 상황: "앱 아이콘이 나이키 로고랑 비슷하네요?" 또는 "저작권 있는 아이유 노래를 썼네요?"
- 해결책:
- 팬심으로 만든 앱이라도 원작자의 허락이 없으면 리젝입니다.
- 유튜브 임베딩 주의: 유튜브 영상을 앱에서 보여줄 때, 백그라운드 재생 기능을 넣으면 "유튜브 프리미엄 우회"로 간주되어 리젝됩니다 (이거 정말 많이 당합니다).
AVAudioSession설정을 확인하세요.
4. 안드로이드(Google Play)의 변화 - "20명 테스트 필수"
구글은 예전에 "개발자 등록비 $25 내면 프리패스"라는 인식이 있었습니다. 심사도 기계가 해서 2시간이면 통과됐죠. 하지만 이제 달라졌습니다.
- 20명 비공개 테스트 (Closed Testing): 2023년 11월 이후 생성된 개인 개발자 계정은, 앱 출시 전에 20명 이상의 테스터를 모집해서 14일 연속으로 비공개 테스트를 진행해야만 프로덕션(정식 출시) 권한을 줍니다.
- 이유: 퀄리티 낮은 앱이 너무 많이 올라와서 문턱을 확 높였습니다.
- 대응: 지인 20명을 모으거나, 서로 테스터를 해주는 커뮤니티(품앗이)를 찾아야 합니다. "나 혼자 개발해서 짠 하고 출시"하는 시대는 끝났습니다.
5. 숨겨진 진실 - 봇이 아니라 사람이 검사합니다
많은 분들이 앱 심사를 자동화된 봇(Bot)이 한다고 생각합니다. 정적 분석은 봇이 하지만, 최종 결정은 애플 직원이 직접 아이패드를 들고 앱을 켜보면서 합니다. 이 사실을 알면 대응 전략이 달라집니다.
- 심사위원에게 편지 쓰기:
App Review Information의Notes란에 정중하게 편지를 쓰세요. "이 앱은 시각장애인을 위한 앱이라 UI가 단순합니다"라거나 "로그인은 이 계정으로 하시면 됩니다"라고 상세히 적으면 통과 확률이 비약적으로 올라갑니다. - 비디오 첨부: 기능이 복잡하면, 앱 시연 영상을 찍어서 유튜브 링크(비공개)로 남기세요. 심사위원도 사람이라, 글 읽기 귀찮으면 영상 보고 "음, 잘 되네" 하고 통과시켜주기도 합니다.
- 답장하기: 리젝 당했을 때,
Resolution Center에서 따지지 말고 정중하게 소명하세요. "네 말대로 수정했다" 또는 "이건 오해다, 영상 봐라"라고 하면 생각보다 쉽게 풀어줍니다.
6. 앱 성능 관리: Android Vitals & ANR
앱이 출시되었다고 끝이 아닙니다. 구글은 "Android Vitals"라는 지표를 봅니다.
- ANR (Application Not Responding): 앱이 5초 이상 멈춰있는 현상.
- Crash Rate: 앱이 죽는 비율.
이 수치가 나쁘면 구글 플레이 검색 순위에서 나락으로 떨어집니다. 심지어 "기기 호환성 문제"라며 특정 기기(갤럭시 보급형 등)에서 다운로드 자체를 막아버릴 수도 있습니다. 그래서 Firebase Crashlytics 같은 툴을 붙여서 출시 후 모니터링을 필수로 해야 합니다.
7. 심사 제출 전 필수 체크리스트
리젝 당하고 일주일 기다리는 것보다, 제출 전에 10분 체크하는 게 낫습니다.
- 로그인 테스트: 제공한 데모 계정으로 로그인이 잘 되는가? (이중 인증 꺼둘 것)
- 개인정보처리방침 (Privacy Policy): URL이 접속 가능한가? (노션 페이지라도 만들어야 함)
- 스크린샷: 실제 앱 화면과 스크린샷이 일치하는가? (과장 광고 금지)
- 아이패드 확인: 아이패드 지원 체크했으면, 아이패드에서도 UI가 깨지면 안 됨. (안 할 거면 체크 해제)
- 버전업 시 설명: "버그 수정"이라고만 쓰지 말고, 구체적으로 뭘 고쳤는지 써야 심사위원이 좋아함.
8. 마무리 - 리젝은 "반려"가 아니라 "피드백"이다
처음 리젝을 당하면 화가 나지만, 곰곰이 읽어보면 그들의 말이 맞을 때가 많습니다. "사용자가 헷갈릴 수 있다", "개인정보를 너무 많이 가져간다" 등은 결국 내 앱의 품질을 높이는 무료 컨설팅이기도 합니다.
애플과 구글은 적이 아닙니다. 그들은 "내 앱을 명품관에 걸어주고 싶어 하는 까다로운 큐레이터"라고 생각하세요. 그들의 기준을 맞추다 보면, 어느새 내 앱도 '명품'의 반열에 오르게 될 것입니다.