요약: 앱 심사 가이드라인 앱 출시 전 Apple과 Google이 적용하는 심사 규정입니다. Apple의 규정은 App Store 리뷰 가이드라인 다음 카테고리로 분류됩니다. Safety, Performance, Business, Design, Legal Google Play는 출시 버전을 개발자 프로그램 정책 및 콘텐츠 등급, 데이터 보안과 같은 Play Console 요구 사항에 따라 검토합니다. 심사 소요 시간: Apple은 App Review가 24시간 운영되며, 보통 다음 기간 내에 완료된다고 밝히고 있습니다. 제출 건의 50% 이상은 24시간 이내 및 90%는 48시간 이내 (앱 심사). Google에 따르면 일부 계정은 7일 이상 기다려야 할 수 있습니다 (예외적인 경우앱 출시). 새 개인 Play Console 계정도 14일 연속으로 참여 상태를 유지하는 테스터 최소 12명이 비공개 테스트에서 필요할 수 있으며, 프로덕션 출시를 신청할 때 최소 12명이 여전히 참여 중이어야 합니다. 첫 출시 거절은 대개 다음에서 비롯됩니다 2.1 앱 완성도 (크래시, 깨진 링크, 잘못된 데모 계정 등), 2.3 정확한 메타데이터, 그리고 5.1 개인정보 보호 iOS의 경우, Android는 불완전한 Play 정책 또는 테스트 단계 때문입니다. 가이드라인 4.2 및 4.3 전략은 다음을 참고하세요. 2026년 App Store 심사 통과 방법. 평점 및 자녀 보호 기능은 다음을 확인하세요. app store 연령 등급 가이드. 등록 수수료는 다음을 확인하세요. App Store 앱 출시 비용.
App Store 또는 Play Store에 첫 앱을 제출하는 과정은 막막하게 느껴질 수 있습니다. 가이드라인이 계속 진화하고 2026년에는 심사 기준이 더욱 엄격해짐에 따라, 앱 승인을 받으려면 세부 사항에 각별한 주의를 기울여야 합니다. 이 체크리스트는 iOS와 Android 모두의 첫 제출 시 리뷰어가 확인하는 항목을 안내하며, 더 자세한 Apple 거절 대응 전략은 다음 2026년 App Store 심사 통과 방법 가이드를 통해 가이드라인 수준의 상세 내용을 확인하실 수 있습니다.
2026년 심사 프로세스 이해하기
Apple과 Google 모두 최근 몇 년 동안 개인정보 보호, 보안, 사용자 경험을 중심으로 심사 프로세스를 대폭 강화했습니다. 이러한 변화를 이해하는 것은 초보 개발자에게 매우 중요합니다.
iOS App Store 심사 타임라인
Apple은 다음 앱 심사 page:
- 일반적인 소요 시간: 제출된 앱의 최소 50%는 24시간 이내에, 90%는 48시간 이내에 심사가 완료됩니다
- 제출 미완료: 메타데이터, 데모 액세스 또는 규정 준수 답변이 누락되면 심사가 지연되거나 거절될 수 있습니다
- 복잡한 앱: Apple은 더 면밀한 검토가 필요한 앱은 심사가 더 오래 걸릴 수 있다고 밝힙니다 (제출 후)
- 신속 심사: App Store Connect를 통해 제출한 후, 치명적인 버그 수정이나 기한이 정해진 이벤트라면 다음을 통해 요청하세요: Apple의 신속 심사 요청 양식
공개된 평균을 기준으로 계획을 세우고, 개별 사례의 대기열 급증에 흔들리지 말며, 누락된 심사 노트는 모두 지연 리스크로 간주하세요.
App Store Connect에서 보게 될 상태
- 제출 준비: 빌드 또는 메타데이터가 아직 준비 중입니다
- 심사 대기 중: Apple 제출 대기열에 앱이 있습니다
- 심사 중: 리뷰 팀이 앱을 검토하고 있습니다
- 개발자 출시 대기 중: 승인됐지만 수동 출시를 기다리는 중입니다
- 거절됨 / 미해결 문제: 승인을 위해 Apple의 수정 요청이 있습니다
Google Play Store 리뷰 타임라인 (2026 업데이트)
Google은 리뷰 소요 시간을 다음에서 안내합니다 앱 출시:
- 일반 게시: 리뷰가 완료되는 대로 업데이트가 즉시 처리 및 게시됩니다
- 리뷰 기간 연장: 일부 개발자 계정의 경우, Google의 검토가 최대 7일 또는 예외적인 경우 그 이상 소요될 수 있습니다
- 비공개 테스트 단계: 2023년 11월 13일 이후 생성된 개인 계정은 최소 12명의 테스터가 14일 연속으로 테스트에 참여해야 하며 비공개 테스트를 진행해야 합니다. 또한, 프로덕션 액세스 권한을 신청할 때 최소 12명의 테스터가 여전히 참여 중이어야 합니다
- 테스트 완료 후: 앱이 출시되기 전, Play 정책에 따른 프로덕션 리뷰가 진행됩니다
중요 업데이트: 이제 Google은 일부 신규 Play Console 계정에 대해 훨씬 더 엄격한 테스트를 요구하며, 이에 대한 자세한 내용은 아래에서 다룹니다.
Apple Developer 계정 설정
첫 iOS 출시 전에 Apple 쪽 설정이 제대로 되어 있는지 확인하세요:
- 다음 프로그램에 가입하세요: Apple Developer Program
- 가입에 사용하는 Apple 계정의 이중 인증을 켜세요
- 올바른 멤버십 유형을 선택하세요:
- 개인 / 개인 사업자개인 계정: 법적 실명이 App Store의 판매자 이름이 됩니다
- 조직조직 계정: 법인체, D-U-N-S 번호, 공개 웹사이트, 그리고 Apple과의 계약을 체결할 권한이 있는 담당자가 필요합니다
- 등록 시에는 반드시 법적 실명을 사용하세요. 성/이름 필드에 별칭이나 회사명을 입력하면 승인이 지연될 수 있습니다.
- 등록이 승인되면 App Store Connect에 로그인하여 최종 bundle ID, 앱 이름, SKU, 기본 언어로 앱 레코드를 생성하세요.



중요: Apple은 시간이 지남에 따라 최소 SDK 요구 사항을 변경합니다. 현재 2026년 4월 28일기준으로, App Store Connect에 업로드된 앱은 반드시 iOS & iPadOS 26 SDK 이상을 사용해야 합니다..
Android 테스트 필수 요구 사항
처음 Android 앱을 출시하는 개발자들이 가장 많이 놓치는 변경 사항은 다음과 같습니다:
신규 개인 Android 계정의 테스터 12명 요구 사항
Google Play 개발자 계정이 2023년 11월 13일 이후에 생성된 개인 계정의 경우, 앱을 프로덕션에 출시하기 전에 반드시 다음의 비공개 테스트 기간을 거쳐야 합니다:
요구 사항:
- 최소 12명의 테스터: 최소 12명 이상의 테스터가 테스트 참여 상태를 지속적으로 유지해야 합니다
- 14일간의 테스트 기간: 앱이 비공개 테스트 상태인 동안 테스터들이 최소 14일 연속으로 참여 상태를 유지해야 합니다
- 프로덕션 액세스 신청: 신청 시점에 비공개 테스트 기간을 마친 후에도 최소 12명의 테스터가 참여 중이어야 합니다
- 피드백 수집: 발견된 이슈, 수정 사항, 그리고 테스터의 앱 사용 방식을 문서화해야 합니다
테스트 트랙 설정 방법
-
비공개 테스트 트랙 만들기
- Google Play Console로 이동
- 테스트 및 출시 > 테스트 > 비공개 테스트로 이동
- 비공개 테스트 트랙에서 새 출시 버전 만들기
- Android App Bundle 업로드 (
.aab)
-
테스터 모집하기
테스터를 찾는 방법:
- 친구와 가족 (가장 쉬운 시작점)
- 개발자 커뮤니티 (Reddit의 /r/androiddev, /r/betatests)
- 소셜 미디어 팔로워
- 베타 테스트 플랫폼 (BetaList, BetaTesting.com)
- 대학생 (인맥이 있는 경우)
중요: 테스터가 다음 조건을 충족하는지 확인하세요:
- 유효한 Gmail 계정 보유
- 실제 Android 기기 사용
- 14일 전체 기간 동안 참여 상태 유지
-
테스터 초대하기
- Play Console에서 테스터 목록 생성
- 테스터 이메일 주소 추가
- 테스터에게 참여 URL 공유
- 앱을 설치하고 사용하도록 리마인더 발송
-
테스트 활동 모니터링
- Play Console에서 설치 수 확인
- 크래시 리포트 및 ANR(Application Not Responding) 추적
- 테스터 피드백 수집
- 프로덕션 배포 전 주요 이슈 수정
-
프로덕션 배포
- 신청할 때 최소 12명의 테스터가 여전히 참여 중이어야 하며, 직전 14일 동안 계속 참여 상태를 유지했어야 합니다
- Play Console dashboard에서 프로덕션 액세스 신청
- 모든 크래시 리포트 및 피드백 검토
- 프로덕션 릴리스 생성 및 최종 심사 제출
Google이 이 정책을 도입한 이유
Google이 이 요구 사항을 도입한 목적:
- 저품질 앱 스팸 감소
- 사용자에게 배포되기 전 앱이 충분히 테스트되도록 보장
- 실제 사용 패턴으로 악성 앱 식별
- Play Store의 전반적인 품질 향상
현실 점검: 이로 인해 출시 일정이 최소 2~3주 늘어납니다. 이에 맞춰 계획하고 테스터 모집을 일찍 시작하세요.
인증 및 로그인 요구사항
가장 흔한 거절 사유 중 하나는 인증 시스템, 특히 소셜 로그인의 부적절한 구현입니다.
Apple Sign-In 요구 사항 (iOS 필수)
Apple의 규정 (가이드라인 4.8, 로그인 서비스): 앱에서 기본 계정 설정 또는 인증을 위해 제3자 또는 소셜 로그인 서비스(Google, Facebook, X 등)를 사용하는 경우, 반드시 사용자 이름과 이메일로 데이터 수집을 제한하고, 사용자가 이메일을 비공개로 유지할 수 있으며, 동의 없이 광고를 위한 앱 상호작용 데이터를 수집하지 않는 동등한 로그인 옵션을 제공해야 합니다. Sign in with Apple은 이 세 가지 조건을 모두 충족하므로, 2026년에도 이를 준수하는 가장 간단한 방법입니다.
이는 다음에 적용됩니다:
- Google 로그인
- Facebook 로그인
- Twitter/X 로그인
- LinkedIn 로그인
- 기타 모든 서드파티 인증 서비스
다음에는 해당하지 않습니다::
- 이메일/비밀번호 전용 인증
- 정부 신분증 시스템
- 기업용 SSO 시스템 (특정 기업 전용 앱인 경우)
- 교육 기관 인증 시스템
2026년에 Google이나 Facebook 로그인을 제공하는 앱도 Sign in with Apple이 필수인가요?
엄격한 필수 사항은 아니지만, 실무적으로는 가장 쉬운 방법입니다. Apple이 2024년 1월 가이드라인 4.8을 개정한 이후, Google이나 Facebook 같은 제3자 로그인을 통해 기본 계정을 설정하거나 인증하는 앱은 반드시 그와 동등한 수준의 개인정보 보호 중심 로그인 옵션을 제공해야 합니다. 즉, 데이터 수집을 이름과 이메일로 제한하고, 비공개 이메일 사용을 허용하며, 동의 없이 광고 목적으로 사용자를 추적하지 않아야 합니다. Sign in with Apple은 이 규칙을 충족하므로 대부분의 팀이 이를 추가합니다. 자체 계정 시스템만 사용하는 앱, 기존 교육용 또는 기업용 계정이 필요한 앱, 정부나 산업계에서 지원하는 시민 ID 또는 전자 ID 시스템을 사용하는 앱은 예외 대상입니다. 자세히 보기 Apple Sign-In 필수 적용 사항 및 Capgo 소셜 로그인 플러그인.
Sign in with Apple 구현
소셜 로그인을 사용하는 경우, 다음을 구현해야 합니다:
import { SignInWithApple } from '@capacitor-community/apple-sign-in';
async function signInWithApple() {
try {
const result = await SignInWithApple.authorize({
clientId: 'com.yourapp.service',
redirectURI: 'https://yourapp.com/auth/callback',
scopes: 'email name',
state: '12345',
nonce: 'nonce',
});
// result contains:
// - identityToken
// - authorizationCode
// - email (may be null if user previously authorized)
// - givenName
// - familyName
// Send to your backend for verification
await verifyAppleToken(result.identityToken);
} catch (error) {
console.error('Apple Sign In failed:', error);
}
}
주요 고려 사항:
-
이메일 개인정보 보호: 사용자는 이메일을 숨길 수 있습니다. Apple은 프라이빗 릴레이 이메일(예:
abc123@privaterelay.appleid.com)을 제공하며, 앱에서 이를 처리해야 합니다. -
신규 사용자 vs 재방문 사용자: Apple은 최초 인증 시에만 사용자 정보(이름, 이메일)를 제공합니다. 이후 로그인 시에는 정보가 포함되지 않으므로 이를 반드시 저장해야 합니다.
-
버튼 디자인: Apple은 Sign in with Apple 버튼에 대해 엄격한 디자인 가이드라인을 제공합니다. 공식 에셋을 사용하세요.
-
백엔드 검증: 클라이언트 측 토큰만 신뢰하지 말고, 항상 백엔드 서버에서 identity token을 검증해야 합니다.
Android Social Login 요구사항
Android는 iOS처럼 특정 provider를 요구하지는 않지만, Google 가이드라인이 있습니다:
Google Sign-In 요구 사항:
- 공식 Google Sign-In SDK를 사용해야 합니다
- Google 브랜드 가이드라인을 따라야 합니다
- 제공한다면 기본 옵션으로 두는 것이 좋습니다
크로스 플랫폼 권장 사항: 일관성을 위해 양쪽 플랫폼에 동일한 로그인 옵션을 제공하세요:
- 이메일/비밀번호
- Sign in with Apple (iOS 전용, 웹 기반 Apple 로그인을 지원하는 경우 Android에서도)
- Google로 로그인
- 기타 소셜 로그인 (Facebook, Twitter 등)
데모 계정 요구 사항
심사 시 필수 사항: 앱에 로그인이 필요하다면, 해야 합니다 App Review Notes에 작동하는 데모 계정 정보를 제공하세요.
Demo Account Information:
Username: reviewer@demo.com
Password: ReviewTest123!
OR
Test Phone: +1 555-0123
Test OTP: 123456 (static for review)
Notes:
- This account has full premium features enabled
- All payment flows work in sandbox mode
- Account will reset daily
흔히 하는 실수:
- 만료된 계정 정보 제공
- 데모 계정이 모든 기능에 접근할 수 없음
- 전화번호 인증 우회 방법을 언급하지 않음
- 샌드박스 결제 정보를 누락함
개인정보 처리방침 및 법적 요구사항
이제 두 앱 스토어 모두 접근 가능한 개인정보 처리방침과 서비스 약관을 요구합니다. 첫 번째 제출이 승인되기 전에
개인정보 처리방침 요구사항
개인정보 처리방침은 다음을 충족해야 합니다:
-
공개적으로 접근 가능할 것
- 로그인 없이 접근 가능한 공개 URL에 호스팅할 것
- 표준 웹 브라우저에서 로드될 것
- 앱과 동일한 언어로 제공될 것
-
필수 포함 항목:
- 수집하는 데이터 종류 (구체적으로 명시)
- 수집된 데이터의 사용 목적
- 데이터의 제3자 공유 여부
- 데이터 보유 기간
- 사용자 권리 (열람, 삭제, 데이터 이동권)
- 개인정보 관련 문의처
- 아동 개인정보 보호 (앱이 만 13/16세 미만 사용자 대상인 경우)
-
앱 내 링크로 연결
- 설정이나 계정 화면에서 접근 가능해야 함
- 메뉴에 묻히지 않고 한 번 탭으로 접근 가능해야 함
- 기본 브라우저 또는 인앱 브라우저로 열려야 함
개인정보 처리방침 호스팅 위치
옵션 1: 자사 웹사이트 (권장)
https://yourapp.com/privacy-policy
https://yourapp.com/terms-of-service
옵션 2: GitHub Pages (무료)
https://yourusername.github.io/app-privacy-policy
옵션 3: 개인정보 처리방침 생성기 (빠른 시작)
중요: 생성기는 시작 단계에서 유용하지만, 실제 데이터 처리 방식이 방침에 정확히 반영되었는지 확인해야 합니다. 앱의 기능과 맞지 않는 일반적인 템플릿은 반려될 수 있습니다.
이용약관 필수 요구사항
항상 필수인 것은 아니지만, 다음과 같은 경우에는 이용약관을 갖추는 것이 강력히 권장되며 필수적입니다:
- 인앱 결제 또는 구독 서비스를 제공하는 경우
- 사용자 생성 콘텐츠(UGC)가 있는 경우
- 기본 앱 기능을 넘어선 서비스를 제공하는 경우
- 법적 보호를 받고 싶은 경우
필수 포함 사항:
- 이용 약관(Acceptable use policy)
- 계정 해지 조건
- 책임 제한
- 지식재산권
- 분쟁 해결 절차
- 환불 정책 (특히 IAP 관련)
앱 내 구현
// Settings or Account Screen
function LegalLinks() {
return (
<div className="legal-section">
<h3>Legal</h3>
<a
href="https://yourapp.com/privacy-policy"
target="_blank"
rel="noopener noreferrer"
>
Privacy Policy
</a>
<a
href="https://yourapp.com/terms-of-service"
target="_blank"
rel="noopener noreferrer"
>
Terms of Service
</a>
<a
href="https://yourapp.com/contact"
target="_blank"
rel="noopener noreferrer"
>
Contact Us
</a>
</div>
);
}
App Store 메타데이터 요구사항
앱 제출 시 두 스토어 모두 개인정보 처리방침 URL을 반드시 제공해야 합니다:
iOS - App Store Connect:
- 앱 정보 > 일반 정보 > 개인정보 처리방침 URL
- HTTPS 필수 (HTTP는 거부됨)
- App Store 페이지에 표시됩니다
- 실제 연락처 정보가 담긴 Support URL을 추가하세요
- 제출 전 연령 등급 설문지를 완료하세요
Android - Google Play Console:
- 스토어 등록정보 > 스토어 설정 > 개인정보처리방침
- 아동을 대상으로 하는 모든 앱에 필수입니다
- 모든 앱에 강력히 권장합니다
개인정보 보호 영양 정보 (iOS)
iOS는 “영양 정보” 형식의 상세한 개인정보 공개를 요구합니다:
반드시 선언해야 하는 카테고리:
- 연락처: 이메일, 이름, 전화번호
- 금융 정보: 결제 정보, 신용카드, 은행 계좌
- 위치: 정밀 또는 대략적인 위치
- 사용자 콘텐츠: 사진, 동영상, 오디오, 메시지
- 식별자: 사용자 ID, 기기 ID, 광고 ID
- 사용 데이터: 제품 상호작용, 광고 데이터, 크래시 로그
- 진단 정보: 크래시 데이터, 성능 데이터
데이터 유형별 지정 사항:
- 수집 여부
- 사용자 식별 정보 연결 여부
- 트래킹 사용 여부
- 수집 목적
흔히 하는 실수: 분석 도구인 SDK가 데이터를 수집하고 있음에도 수집하지 않는다고 말하는 경우. 모든 third-party SDK의 데이터 수집 여부를 검토하세요.
Google Play 데이터 보안 섹션
iOS와 마찬가지로 Android에서도 데이터 보안(Data Safety) 선언이 필요합니다:
단계:
- Play Console > 앱 콘텐츠 > 데이터 보안으로 이동
- 데이터 수집 관련 질문에 답변
- 수집되는 데이터 유형 지정
- 보안 조치(암호화 등) 설명
- 개인정보 처리방침 링크 제공
긴급: 이 정보는 법적 구속력을 갖습니다. 허위 기재 시 앱 삭제 및 계정 정지 처분을 받을 수 있습니다.
흔한 첫 심사 거절 사유
앱 거절 사유를 미리 파악하면 다음과 같은 실수를 방지할 수 있습니다:
1. 앱 크래시 또는 실행 불가
발생 원인:
- 실제 기기가 아닌 에뮬레이터로만 테스트함
- 네트워크 오류에 대한 에러 처리 누락
- 접속 불가능한 API 엔드포인트가 하드코딩됨
- 특정 기기 기능(카메라, GPS)이 있다고 가정함
예방 방법:
// Always implement proper error handling
async function loadData() {
try {
const response = await fetch('https://api.yourapp.com/data');
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
// Show user-friendly error
showError('Unable to load data. Please check your connection.');
// Log for debugging
console.error('Data load failed:', error);
// Graceful degradation
return getCachedData();
}
}
테스트 체크리스트:
- 실제 기기에서 테스트 (최소 2~3개 모델)
- 불안정한 네트워크 환경에서 테스트 (Network Link Conditioner 사용)
- 비행기 모드에서 테스트
- 권한 거부 상태에서 테스트
- 신규 설치 상태에서 테스트 (캐시 데이터 없음)
2. 핵심 기능 누락 또는 오류
발생 원인:
- 스크린샷에 표시된 기능은 아직 없습니다
- 데모 계정에 홍보된 기능에 대한 접근 권한이 없음
- 프리미엄 기능이 표시되지만 구현되지 않음
- 앱에 “출시 예정” 플레이스홀더가 있음
예방 방법:
- 홍보된 모든 기능이 완성된 후에만 제출하세요
- 데모 계정에 전체 접근 권한이 있는지 확인하세요
- 제출 전에 미완성 기능을 제거하거나 비활성화하세요
- 현재 빌드와 정확히 일치하도록 스크린샷을 업데이트하세요
3. 연령 등급에 부적절한 콘텐츠
발생 원인:
- 연령 등급이 4+로 설정됐지만 앱에 소셜 기능이 포함됨
- 연령 등급이 실제 콘텐츠와 일치하지 않음
- 검토되지 않은 사용자 생성 콘텐츠
- 검토되지 않은 외부 콘텐츠 링크
올바른 연령 등급 설정 방법:
iOS 연령 등급:
- 4+ (부적절한 콘텐츠 없음)
- 9+ (가끔 가벼운 콘텐츠 포함)
- 12+ (보통 수준의 콘텐츠 포함)
- 17+ (잦은/강렬한 콘텐츠)
Android 콘텐츠 등급:
- 전체 이용가
- 10세 이상 이용가
- 청소년
- 17세 이상 이용가
- 18세 이상 성인 전용
중요사용자끼리 콘텐츠를 공유할 수 있다면 다음이 필요합니다:
- 콘텐츠 모더레이션 시스템
- 신고/차단 기능
- 명확한 커뮤니티 가이드라인
- 필요 시 연령 제한
4. 기만적이거나 오해의 소지가 있는 메타데이터
발생 원인:
- 앱 이름이 실제로 없는 기능을 약속
- 경쟁사 스크린샷 또는 목업
- 허위 리뷰 또는 평점 조작
- 설명에 근거 없는 최상급 표현 포함
부적절한 메타데이터 사례:
❌ 나쁜 사례:
- 앱 이름: “최고의 피트니스 트래커 - #1 앱”
- 설명: “역사상 가장 놀랍고 혁신적인 앱!”
- 스크린샷: 흔한 스톡 이미지
✅ 좋은 사례:
- 앱 이름: “FitTrack - 운동 기록”
- 설명: “맞춤형 루틴과 진행 차트로 운동을 기록하세요.”
- 스크린샷: 현재 빌드의 실제 앱 화면
5. 테스트 부족 (특히 Android 비공개 테스트)
발생 원인:
- 필수 14일 테스트 기간 건너뛰기
- 테스터 모집 인원 부족
- 테스터들이 실제로 앱을 사용하지 않음
- 테스트 중 크래시 모니터링 부재
예방 방법:
- 출시 예정일 3~4주 전부터 테스터 모집 시작
- 테스트 기간 중 Firebase Crashlytics 등 활용
- 테스터와 적극적으로 소통 (설문조사, 피드백 양식)
- 프로덕션 배포 전 크리티컬 이슈 해결
6. 정당한 사유 없는 권한 요청
발생 원인:
- 위치 권한만 요청하고 사용하지 않음
- 설명 없는 카메라 권한 요청
- 목적이 불분명한 연락처 접근
- 내비게이션 외 앱의 백그라운드 위치 사용
해결 방법:
iOS - Info.plist:
<key>NSCameraUsageDescription</key>
<string>Camera access is required to scan QR codes for quick login.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location helps us show nearby fitness centers and outdoor running routes.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Photo library access lets you upload a profile picture and share workout photos.</string>
Android - 권한 전략:
<!-- Only request what you actually need -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- Use when-in-use rather than always for location -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Avoid if possible -->
<!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> -->
런타임 권한 요청:
import { Camera } from '@capacitor/camera';
async function takePicture() {
// Request with context
const permissionStatus = await Camera.requestPermissions();
if (permissionStatus.camera === 'granted') {
const photo = await Camera.getPhoto({
quality: 90,
allowEditing: true,
resultType: 'uri'
});
return photo;
} else {
// Explain why permission is needed
showDialog(
'Camera access required',
'To upload a profile picture, please enable camera access in Settings.'
);
}
}
iOS 전용 요구 사항
App Store 스크린샷 및 미리보기
필수 사이즈:
- 6.7” iPhone: 1290 x 2796
- 13” iPad: 2064 x 2752
- 12.9” iPad: 2048 x 2732
중요: 앱이 iPad를 지원하는 경우, 반드시 iPad 스크린샷을 업로드해야 합니다. iPhone 스크린샷을 iPad 슬롯에 맞춰 늘리지 마세요.
스크린샷 권장 사항:
- 실제 앱 콘텐츠를 보여줘야 함 (목업 금지)
- 상태 표시줄 제거 또는 실제 콘텐츠 표시
- 지원하는 모든 언어로 현지화 적용
- 과도한 텍스트 오버레이 지양
- 처음 2~3개의 스크린샷에 핵심 기능 노출
App Store Connect 메타데이터 설정
제출 전, App Store Connect의 다음 필드를 완료하세요:
- 개인정보 처리방침 URL: iOS 앱 필수 항목
- 지원 URL: 필수이며, 실제 연락처 정보로 연결되어야 함
- 연령 등급: 앱 출시를 위해 설문지를 완료하세요
- 앱 심사 정보: 심사 담당자 연락처, 로그인 필요 시 작동하는 데모 계정, 심사 팀을 위한 명확한 메모를 추가하세요
- 수출 규정 준수: 암호화 관련 질문에 답하거나,
ITSAppUsesNonExemptEncryption에서Info.plist적절한 경우 업로드할 때마다 같은 답변을 반복하지 않도록 설정하세요
앱 심사 전 TestFlight 테스트
프로덕션 리뷰 전, TestFlight로 실제 테스트를 완료하세요:
- TestFlight에서 배포할 빌드와 동일한 버전을 설치하세요
- 심사관에게 제공할 계정과 동일한 계정으로 로그인하세요
- 구매, 복원, 취소 프로세스를 직접 확인하세요
- 추가 설정 없이 주요 기능에 바로 접근 가능한지 확인하세요
- iPhone과 iPad를 모두 지원한다면 두 기기 모두 테스트하세요
앱 미리보기 영상 (선택 사항이지만 권장)
요구 사항:
- 15~30초 길이
- 실제 앱 구동 화면 포함 필수
- 짧은 텍스트 오버레이 사용 가능
- 저작권 문제가 없는 음악 사용
- 스크린샷과 동일한 해상도
Sign in with Apple 구현 방식
위에서 언급했으나, 소셜 로그인이 있다면 iOS 심사 시 매우 중요합니다.
In-App Purchase 요구 사항
디지털 상품 또는 서비스를 제공하는 경우:
필수 고지 사항:
- 구매 전 명확한 가격 안내
- 구독 약관 명확히 표시
- 해지 방법 안내 표시
- 구매 복원 버튼
규정 준수 구독 화면 예시:
function SubscriptionOffer() {
return (
<div className="subscription-screen">
<h2>Choose Your Plan</h2>
<PlanCard>
<h3>Monthly</h3>
<p className="price">$9.99/month</p>
<ul>
<li>Unlimited workouts</li>
<li>Personalized plans</li>
<li>Progress tracking</li>
</ul>
<button>Subscribe</button>
</PlanCard>
<PlanCard>
<h3>Annual</h3>
<p className="price">$79.99/year</p>
<p className="savings">Save 33%</p>
<ul>
<li>Everything in Monthly</li>
<li>Priority support</li>
</ul>
<button>Subscribe</button>
</PlanCard>
<div className="subscription-terms">
<p>
Subscription automatically renews unless cancelled at least
24 hours before the end of the current period. Manage your
subscription in Settings.
</p>
<button onClick={restorePurchases}>Restore Purchases</button>
</div>
<div className="legal-links">
<a href="/privacy/">Privacy Policy</a> |
<a href="/terms">Terms of Service</a>
</div>
</div>
);
}
Android 전용 요구 사항
Google Play Console 계정 설정
첫 Android 출시 전, Play Console 계정과 앱 셸이 준비되었는지 확인하세요:
- 다음에서 개발자 계정을 생성하세요: Play Console 가입
- Play Console에서 다음으로 이동하세요: 홈 > 앱 만들기
- 기본 언어, 앱/게임 유형, 지원 이메일을 선택하세요
- 필수 Play 정책, 수출 및 Play 앱 서명 선언에 동의하세요
- 앱의 무료 여부를 결정하세요: 무료 또는 유료
중요: Google에서는 유료 앱을 나중에 무료로 전환할 수 있지만, 한 번 무료로 제공된 앱은 다시 유료로 전환할 수 없습니다.
App Bundle 요구 사항
중요: Google Play는 APK가 아닌 Android App Bundle (.aab) 형식을 요구합니다:
# Sync the native Android project first
bunx cap sync android
# Then build the release app bundle
cd android
./gradlew bundleRelease
타겟 API 레벨 요구 사항
현재 요구 사항: 신규 앱 및 앱 업데이트는 Android 15 (API 레벨 35) 이상을 타겟팅해야 합니다.
android/app/build.gradle 파일 업데이트:
android {
compileSdkVersion 35
defaultConfig {
targetSdkVersion 35
minSdkVersion 23 // Minimum supported version
}
}
Google Play 데이터 보안
위에서 이미 다뤘지만, Android 승인에는 정말 중요합니다.
비공개 테스트 트랙 (현재 필수 사항)
새로 생성된 개인 개발자 계정에게 가장 큰 관문은 바로 앞서 설명한 '12명의 테스터가 14일 동안 연속으로 참여해야 하는 요구 사항'입니다.
타임라인:
- 1주 차: 테스터 모집, 비공개 테스트 설정
- 2~3주 차: 활성 테스트 기간 (최소 14일)
- 4주 차: 이슈 수정 및 프로덕션 출시 준비
- 5주 차: 프로덕션 심사 제출
타겟층 및 콘텐츠 등급
콘텐츠 등급 설문조사:
- 모든 앱 필수 사항
- 완료까지 약 10~15분 소요
- 연령 등급 결정 (전체 이용가, 12세 이상, 18세 이상 등)
- 답변에 영향을 미치는 콘텐츠 변경 시마다 업데이트하세요
다루는 주제:
- 폭력성
- 성적 콘텐츠
- 비속어
- 규제 약물
- 도박
- 사용자 상호작용 기능
중요: 사용자 생성 콘텐츠(UGC)나 소셜 기능이 있다면, 이를 명시하고 모더레이션을 구현해야 합니다.
스토어 등록 요구사항
필수 에셋:
- 앱 아이콘 (512 x 512 PNG)
- 특집 그래픽 (1024 x 500 JPG 또는 PNG)
- 휴대전화 스크린샷 (최소 2개, 최대 8개)
- 7인치 태블릿 스크린샷 (선택 사항이지만 권장)
- 10인치 태블릿 스크린샷 (선택 사항이지만 권장)
설명 요구 사항:
- 짧은 설명 (최대 80자)
- 전체 설명 (최대 4000자)
- 앱 기능을 정확하게 설명해야 함
- 연락처 정보나 가격 정보를 포함할 수 없음
제출 전 체크리스트
제출하기 전에 이 종합 체크리스트를 확인하세요:
기술 요구 사항
- 실제 기기에서 앱이 정상적으로 실행됨
- 스크린샷에 표시된 모든 기능이 정상 작동함
- 플레이스홀더 또는 “Coming Soon” 콘텐츠 없음
- 모든 서드파티 API 키가 프로덕션 키임
- 네트워크 에러 핸들링 구현 완료
- 권한 요청 시 명확한 설명 포함
- 불안정한 네트워크 환경에서도 앱이 크래시되지 않음
- 권한 거부 상황에 대한 테스트 완료
- 최소 지원 OS 버전에서 테스트 완료
- 메모리 누수 점검 및 수정 완료
인증 및 로그인
- 소셜 로그인을 사용하는 경우, Sign in with Apple 포함 (iOS)
- 리뷰 노트에 데모 계정 정보 기재
- 데모 계정은 모든 기능 사용 가능
- 비밀번호 재설정 플로우 정상 작동
- 로그아웃 기능 정상 작동 확인
- 계정 삭제 옵션 제공 (GDPR/CCPA 필수 사항)
법적 고지 및 개인정보 보호
- 개인정보 처리방침 누구나 접근 가능
- 앱 스토어 정보에 개인정보 처리방침 URL 추가
- 서비스 이용약관 누구나 접근 가능 (해당 시)
- 앱 내 개인정보 처리방침 링크 (설정 화면)
- 개인정보 보호 영양 정보 정확성 (iOS)
- 데이터 보안 섹션 완료 (Android)
- 모든 데이터 수집 목적 설명 완료
- 제3자 SDK 데이터 수집 공개
콘텐츠 및 메타데이터
- 가이드라인을 준수한 앱 이름 (키워드 나열 금지)
- 기능을 정확하게 설명한 앱 설명
- 현재 앱의 실제 화면을 보여주는 스크린샷
- 지원되는 모든 언어로 현지화된 스크린샷
- 설명 내 경쟁사 언급 없음
- 근거 없는 최상급 표현 사용 금지
- 실제 콘텐츠와 일치하는 연령 등급
- 연락처 이메일 모니터링 중
iOS 관련 사항
- Social Login 사용 시 Sign in with Apple 구현 완료
- 필수 스크린샷 규격 모두 준비 완료
- iPad 지원 시 실제 iPad 스크린샷 업로드 완료
- Info.plist 권한 설명 문구 명확함
- 실제 연락처가 포함된 Support URL 추가
- App Store Connect에 개인정보 처리방침 URL 추가
- 연령 등급 설문 완료
- 수출 규정 준수 올바르게 답변 완료
- App Review 담당자 정보 및 만료되지 않는 데모 계정 제공
- iOS 15.0 이상 타겟팅
- IAP 사용 시: 가격 명시 및 구매 복원 버튼 포함
- Android 또는 타 플랫폼 언급 금지
Android 관련 사항
- App Bundle (.aab) 형식 사용
- Target API 35 이상
- 콘텐츠 등급 설문 완료
- 그래픽 이미지 업로드 완료
- Play Console 계정 요구 시 비공개 테스트 완료 (14일 동안 12명 이상의 테스터가 지속적으로 참여해야 하며, 신청 시점에도 최소 12명이 유지되어야 함)
- 테스트 중 발견된 크래시 리포트 검토 및 수정 완료
- iOS 또는 타 플랫폼에 대한 언급 제거
테스트 (Android 현재 요구사항)
- Play 계정의 비공개 테스트 요건 충족을 위한 테스터 12명 이상 모집
- 비공개 테스트 트랙 생성 완료
- 14일 연속으로 12명 이상의 테스터가 참여 상태를 유지했으며, 신청 시점에도 최소 12명이 참여 중
- 테스터가 앱을 실제로 사용함 (설치만 한 것이 아님)
- 테스트 중 크래시 모니터링 활성화
- 테스트에서 발견된 치명적 버그 수정 완료
- 테스터 피드백 기록 완료
심사 노트: 포함할 내용
심사 노트를 잘 쓰면 즉시 승인될지 거절될지가 갈립니다. 다음 내용을 포함하세요:
심사 노트 템플릿
APP REVIEW INFORMATION
=== Test Account ===
Email: reviewer@testapp.com
Password: TestReview123!
(This account has all premium features enabled)
(This account stays active during review)
=== Review Contact ===
Name: Jane Developer
Email: review@yourapp.com
Phone: +1 555-0100
=== Testing Instructions ===
1. Launch app and tap "Sign In"
2. Enter test credentials above
3. Navigate to "Dashboard" to see main features
4. Tap "Upgrade" to test subscription flow (sandbox mode)
5. Go to Settings > Account to see privacy policy and terms
=== Key Features to Test ===
- Workout tracking (tap "New Workout" on Dashboard)
- Progress charts (Analytics tab)
- Social sharing (Share button on workout details)
- Camera upload for profile picture (Settings > Profile)
=== Third-Party Services ===
- Firebase Authentication (for login)
- Stripe (for payments - sandbox mode)
- AWS S3 (for image uploads)
- Google Maps SDK (for location features)
=== Notes ===
- Location permission is optional, app works without it
- Camera permission only requested when uploading profile picture
- All subscription flows use Apple/Google sandbox environments
- Background location is not used
- Support URL and privacy policy are available from Settings > Account
=== Contact ===
For questions: developer@yourapp.com
Response time: Within 24 hours
iOS 전용 심사 노트
iOS의 경우 다음 내용도 포함하세요:
=== Device Coverage ===
Tested on: iPhone 15 Pro Max, iPad Pro 13-inch
=== App Store Connect Metadata ===
Support URL: https://yourapp.com/support
Privacy Policy: https://yourapp.com/privacy-policy
=== Submission Notes ===
- iPad screenshots match the current iPad UI
- Export compliance answered for this build
- Sign in with Apple is available on the login screen
Android 전용 심사 노트
Android의 경우 다음 내용도 포함하세요:
=== Testing Track Information ===
Closed testing period: [Start Date] to [End Date]
Number of active testers: 23
Critical issues found during testing: 2 (both fixed)
Test distribution method: Email invite list
=== Crash Data ===
Testing period crashes: 3 total
Crash rate: 0.8%
All crashes fixed in this build
=== API Levels ===
Target SDK: 35 (Android 15)
Min SDK: 23 (Android 6.0)
Tested on: Android 11, 12, 13, 14, 15
심사 거절 시 대처 방법
당황하지 마세요. 첫 앱 심사에서 거절되는 것은 흔한 일입니다. 다음 단계에 따라 대처하세요:
심사 거절 후 대응 단계
-
거절 사유를 꼼꼼히 확인하세요
- 위반된 구체적인 가이드라인을 파악하세요 (예: 4.3, 5.1.1)
- 리뷰어의 코멘트를 철저히 읽어보세요
- 제공된 스크린샷이 있다면 확인하세요
-
문제 파악하기
- 공식 문서에서 가이드라인 확인
- 온라인에서 유사 사례 검색
- 오해인지 실제 문제인지 판별
-
근본 원인 해결
- 임시방편이 아니라 제대로 고치세요
- 수정 사항을 철저히 테스트하세요
- 변경 사항을 문서화하세요
-
적절히 대응하세요
거절 사유가 타당하다면:
Thank you for the feedback. I have addressed the issue: Issue: Missing Sign in with Apple option Resolution: Added Sign in with Apple as a login option alongside Google Sign-In. The button appears on the login screen and follows Apple's design guidelines. You can test with the provided demo account or by creating a new account with Apple Sign-In. Changes made in: v1.0.1 (build 2)오해라고 생각된다면:
Thank you for reviewing my app. I believe there may be a misunderstanding regarding [specific issue]: [Explain clearly with screenshots if needed] The functionality exists at: Settings > [specific location] I've added additional detail to the review notes to help locate this feature. -
신속히 재제출하세요
- 재제출은 보통 더 빨리 검토됩니다(24-48시간)
- 수정 내용을 설명하는 업데이트된 심사 노트를 포함하세요
- 필요하다면 이전 제출 내용을 참조하세요
흔한 거절 대응
거절 사유: “앱 실행 시 크래시가 발생합니다”
답변:
I sincerely apologize for the crash. I have identified and fixed
the issue:
Root cause: The app attempted to fetch data before network
initialization completed, causing a null reference exception.
Fix: Implemented proper async initialization with error handling
and offline mode. The app now gracefully handles network issues.
Testing: Verified on iPhone 12 (iOS 17), iPhone 14 Pro (iOS 17.1),
tested with WiFi, cellular, and airplane mode.
Build version: 1.0.2 (build 3)
거절 사유: “개인정보 처리방침 누락”
답변:
Thank you for the feedback. I have added the privacy policy:
URL: https://myapp.com/privacy-policy
Location in app: Settings > Privacy Policy (tappable link)
Also added to: App Store Connect > App Information > Privacy Policy URL
The privacy policy covers all data collection as disclosed in the
Privacy Nutrition Labels.
거절 사유: “4.2 - 최소 기능성 미준수”
이건 좀 더 까다롭습니다. 앱으로서의 가치가 충분하지 않다는 뜻입니다. 자세한 내용은 2026년 App Store 심사 통과 방법 전체 4.2 및 4.3 대응 플레이북을 참고하세요. 이의 신청 예시 문구:
답변:
Thank you for the feedback. I'd like to clarify the app's
functionality:
Core Features:
1. [Feature 1 with specific details]
2. [Feature 2 with specific details]
3. [Feature 3 with specific details]
The app provides significant utility beyond a simple website by:
- Offline functionality for [specific feature]
- Native camera integration for [specific feature]
- Push notifications for [specific feature]
- Device hardware access for [specific feature]
Test account credentials have been provided to demonstrate all
features. Please let me know if you need additional clarification.
승인 후 권장 사항
축하합니다! 앱이 승인되었습니다. 승인 상태를 유지하는 방법은 다음과 같습니다:
출시 후 모니터링
주요 모니터링 지표:
- Crash rate (1% 미만 유지)
- ANR rate (Android - 0.5% 미만 유지)
- App Store/Play Store 평점
- 리뷰 검토 (모든 리뷰에 답변하기)
- 사용자 제보 버그
사용할 도구:
- Firebase Crashlytics
- App Store Connect 분석
- Google Play Console Vitals
- Sentry 또는 유사 에러 트래킹 도구
업데이트 가이드라인
업데이트 제출 시:
- 최초 제출 때만큼 철저히 테스트하기
- UI가 크게 바뀌었다면 스크린샷 업데이트하기
- 데이터 수집이 바뀌었다면 개인정보 보호 라벨 업데이트하기
- 명확한 “새로운 기능” 설명 제공하기
- 주요 변경 사항은 단계적 배포 고려하기
가이드라인 준수 유지
연간 필수 요구 사항:
- Android 콘텐츠 등급 갱신 (매년 필수)
- 데이터 처리 방식 변경 시 개인정보 처리방침 업데이트
- 콘텐츠 변경 시 연령 등급 검토 및 업데이트
- 서드파티 SDK의 규정 준수 여부 감사
지속적인 모니터링:
- 가이드라인 변경 사항 상시 확인
- Apple/Google 개발자 뉴스레터 구독
- 개발자 커뮤니티 참여
- App Store/Play Store 정책 블로그 팔로우하기
자료 및 추가 읽을거리
공식 문서
Apple:
Google:
커뮤니티 리소스
- r/androiddev - Android 개발자 커뮤니티
- r/iOSProgramming - iOS 개발자 커뮤니티
- Stack Overflow - 기술 질문
- Indie Hackers - 인디 개발자 커뮤니티
개인정보 처리방침 도구
자주 묻는 질문
앱 리뷰 가이드라인이란 무엇인가요?
Apple의 App Store 리뷰 가이드라인 및 Google의 개발자 프로그램 정책입니다. 리뷰어는 출시 전 바이너리, 메타데이터, 개인정보 보호 공시 및 계정 설정을 검토합니다.
2026년 앱 리뷰는 얼마나 걸릴까요?
Apple은 제출물의 50%를 24시간 이내에, 90%를 48시간 이내에 처리하는 것을 목표로 합니다. Google은 계정에 따라 최대 7일 또는 그 이상이 소요될 수 있습니다. 또한 해당 규칙이 적용되는 경우, 신규 개인 Play Console 계정은 최소 12명의 테스터가 14일 연속으로 비공개 테스트에 참여해야 하며, 신청 시점에도 최소 12명이 참여 상태를 유지해야 합니다.
Apple의 5가지 가이드라인 섹션은 무엇인가요?
안전, 성능, 비즈니스, 디자인, 법률입니다. 성능은 완성도와 메타데이터(2.3 포함)를 다루며, 법률은 개인정보 보호(5.1 포함)를 다룹니다.
첫 제출 전 무엇을 수정해야 하나요?
작동 가능한 데모 로그인, HTTPS 보안 및 지원 링크, 정직한 개인정보 보호 라벨, 실제 기기 테스트, 그리고 빌드와 일치하는 스토어 에셋을 준비하세요. 또한 연령 등급 설문조사 앱에 해당되는 경우 양쪽 스토어 모두에 적용됩니다.
가이드라인 4.2와 4.3은 어디에 해당하나요?
이는 기능이 부족하거나 중복된 앱에 대한 Apple Design 거절 사유입니다. 해당 범위에는 2026년 App Store 심사 통과 방법 이 체크리스트가 아닌 다음을 사용하세요.
Apple 앱 출시 비용은 얼마인가요?
자세한 내용은 App Store 앱 출시 비용은 현재 등록 및 리스팅 수수료를 확인하세요.
앱 심사 관련 도움이 필요하신가요?
막막하거나 첫 심사 통과를 위한 전문가의 가이드가 필요하다면, 저희가 도와드리겠습니다!
팀과 상담 예약하기 다음 사항에 대한 맞춤형 지원:
- App Store 및 Play Store 심사 준비
- 개인정보 처리방침 및 법적 문서 검토
- Sign in with Apple 구현
- 테스트 전략 및 테스터 모집
- 심사 노트 준비
- 거절 대응 및 이의 신청
- 전체 앱 제출 프로세스
저희 팀은 수백 명의 개발자가 앱 심사를 성공적으로 통과하도록 도왔으며, 여러분의 시행착오를 몇 주나 줄여 드릴 수 있습니다.
마치며
첫 앱 제출은 막막할 수 있지만, 제대로 준비하면 한 번에 심사를 통과할 수 있습니다. 다음 핵심 사항을 기억하세요:
- 미리 시작하기: 특히 Android의 경우 - 출시 예정일 최소 3주 전에 12명의 테스터를 모집하세요
- 개인정보 보호 우선: 개인정보 처리방침을 준비하고 데이터 처리 방식을 정확히 반영하세요
- Apple로 로그인: 소셜 로그인을 사용하는 경우, iOS에서는 반드시 Sign in with Apple을 포함해야 합니다
- 철저한 테스트: 실제 기기, 불안정한 네트워크 환경, 그리고 권한이 거부된 상태에서 테스트하세요
- 솔직하게 작성하세요: 정확한 메타데이터와 개인정보 고지는 거절과 법적 문제를 방지합니다
- 상세한 리뷰 노트: 리뷰어가 앱을 빠르게 이해하도록 돕습니다
현재 Android 테스트 요구 사항은 프로세스 시간을 늘리지만, 결국 더 나은 앱과 출시 후 문제 감소로 이어집니다. Android 제출에는 3~4주를 추가로 잡아두면 성공 가능성이 높아집니다.
앱 출시에 행운을 빕니다! 거절되더라도 배움의 기회로 삼으세요. 성공한 앱 대부분도 승인 전 여러 차례 리뷰를 거칩니다.
혼자 진행하고 싶지 않으신가요? 상담 예약하기 저희 전문가가 프로세스 전반을 안내해 드립니다.
앱 승인 후 라이브 업데이트 구현에 도움이 필요하신가요? 다음을 확인해 보세요. Capgo의 live update 솔루션을 확인해 보세요. 앱 스토어 리뷰 없이 원활한 앱 업데이트를 위한 것입니다.
App Review Guidelines 2026에서 이어서 보기
보안 및 컴플라이언스 계획을 위해 이 앱 리뷰 가이드라인 체크리스트를 사용 중이라면, 다음을 연결하세요: 암호화 암호화 구현 상세 정보: 컴플라이언스 컴플라이언스 구현 상세 정보: Capgo 보안 스캐너 Capgo Security Scanner 제품 워크플로우: Capgo 보안 Capgo Security 제품 워크플로우 및 Capgo 신뢰 센터 Capgo Trust Center 제품 워크플로우: