App Store와 Google Play에서 앱 승인을 받는 것은 특히 인앱 결제(IAP)와 구독 기능을 구현할 때 까다로울 수 있습니다. 2025년에는 가이드라인이 더욱 엄격해진 만큼, 리뷰어가 무엇을 중점적으로 보는지 파악하는 것이 매우 중요합니다. 이 가이드는 첫 제출에서 바로 승인을 받을 수 있도록 필요한 모든 내용을 다룹니다.
상세한 설정 가이드가 필요하신가요? 전체 가이드를 확인해 보세요: iOS App Store 심사 가이드 | Android Play Store 심사 가이드
IAP 포함 앱이 거절되는 이유
인앱 결제가 포함된 앱은 실제 금전 거래가 수반되므로 더 엄격한 심사를 받습니다. 다음의 Apple App Store 심사 가이드라인 및 Google Play 수익화 정책에 따르면, 2025년 주요 거절 사유는 다음과 같습니다:
- 불분명한 가격 정책 (거절 사유의 42%)
- 구독 약관 누락 또는 혼란스러운 문구 (31%)
- 기만적인 UI 패턴 (18%)
- 개인정보 처리방침 위반 (9%)
이제 각각의 함정을 피하는 방법을 살펴보겠습니다.
iOS App Store 요구 사항
📖 iOS 종합 가이드: 전체 설정 방법은 아래를 참고하세요: iOS App Store 심사 가이드
1. 확실한 가격 투명성
Apple은 정확한 가격 명시를 요구합니다 첫 번째 제출이 승인되기 구매 버튼. 이는 필수 사항입니다.
Apple의 심사 기준:
- 명확한 가격 표시: “$9.99/month”
- 결제 주기 사전 명시
- 구독 시 제공되는 혜택
- 결제 발생 시점
- 해지 방법 안내 표시

흔히 하는 실수: “구독하기”를 누르기 전까지 가격을 숨기거나, 아주 작은 글씨로만 가격을 표시하는 경우.
해결 방법:
// Example: Compliant subscription display
<div className="subscription-card">
<h2>Premium Plan</h2>
<p className="price">$9.99/month</p>
<ul>
<li>✓ Ad-free experience</li>
<li>✓ Unlimited cloud storage</li>
<li>✓ Priority support</li>
</ul>
<p className="terms">
Renews automatically. Cancel anytime in Settings.
</p>
<button>Subscribe Now</button>
</div>
가격 일관성 원칙: 다음 항목 간의 가격이 모두 일치해야 합니다:
- App Store 등록 정보
- 인앱 구매 화면
- 구독 관리
- 마케팅 자료
단 1달러의 차이만으로도 자동 거절됩니다.
2. 구독 플랜 표시
Apple은 고가 요금제를 유도하는 '다크 패턴'을 사용하는 앱을 문제 삼습니다.
필수 사항:
- 모든 구독 요금제를 동등하게 표시
- 프리미엄 옵션 사전 선택 금지
- 명확한 기능 비교
- 찾기 쉬운 저렴한 대안
금지 사항:
- 연간 플랜을 기본값으로 자동 설정
- 월간 옵션을 추가 탭 뒤에 숨기기
- 카운트다운 타이머로 허위 긴박감 조성
- 가짜 희소성(“남은 자리 3개뿐!”)
3. 구매 복원 기능
IAP가 있는 모든 앱은 고객 지원에 문의하지 않아도 작동하는 구매 복원 버튼을 제공해야 합니다. 자세한 내용은 저희 문서에서 확인하세요: 시작 가이드.
구현 방법:
import { NativePurchases } from '@capgo/native-purchases';
async function restorePurchases() {
try {
const { customerInfo } = await NativePurchases.restorePurchases();
if (customerInfo.activeSubscriptions.length > 0) {
showSuccess('Purchases restored!');
unlockPremiumFeatures();
} else {
showInfo('No previous purchases found.');
}
} catch (error) {
showError('Restore failed. Please try again.');
}
}
4. 개인정보 보호 규정 준수 (Section 5.1.1)
2025년에는 개인정보 보호 단속이 더 엄격해집니다. 이제 Apple은 다음을 요구합니다:
모든 권한에 대해:
- 명확한 설명 첫 번째 제출이 승인되기 요청 시
- 구체적인 사용 사례 (일반론 지양)
- 데이터 저장 및 공유 방식
- 선택 사항 여부
예시 Info.plist 항목:
<key>NSCameraUsageDescription</key>
<string>Camera access lets you scan product barcodes for quick upgrades. Photos are never uploaded.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location shows relevant local content in your Premium subscription.</string>
부정확한 개인정보 보호 라벨은 2025년 주요 거절 사유입니다.
Android Google Play 요구 사항
📖 Android 종합 가이드: 전체 설정 방법은 아래를 참고하세요: Android Play Store 심사 가이드
1. Google Play Billing 필수
디지털 상품(구독, 인앱 콘텐츠)의 경우, 해야 합니다 Google Play Billing을 사용해야 합니다. 대체 결제 수단은 거부됩니다.
디지털 상품 (Play Billing 필수):
- 기능 구독
- 인앱 재화
- 디지털 콘텐츠 (전자책, 음악)
- 프리미엄 기능 해제
실물 상품 (Play Billing 사용 불가):
- 실제 판매 상품
- 실물 서비스
- 비영리 단체 기부
native-purchases 구현 방법:
Android 전체 설정은 다음을 참조하세요: Android Sandbox 테스트 및 구독 생성하기.
import { NativePurchases } from '@capgo/native-purchases';
// Automatically uses Google Play Billing on Android
await NativePurchases.configure({
apiKey: 'your_api_key'
});
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly']
});
2. 투명한 자동 갱신 안내
Google은 다음 내용을 포함하여 구독이 자동 갱신됨을 명확히 고지할 것을 요구합니다:
- 결제 전 갱신 알림
- 가격 변동 안내
- 간편한 해지 경로
규정 준수 UI:
<div className="subscription-terms">
<p>Subscription renews automatically at $9.99/month</p>
<p>Cancel anytime in Google Play Subscriptions</p>
<p>Next billing date: February 15, 2025</p>
<button onClick={openManagement}>
Manage in Google Play
</button>
</div>
3. 개인정보 처리방침 요구사항
IAP 앱 필수 사항:
- Play Console 내 개인정보 처리방침 URL
- 앱 내 접근 가능한 개인정보 처리방침 링크
- 정확한 데이터 보안 섹션 선언
데이터 보안 필수 신고 항목:
- 구매 내역 수집
- 이메일 주소 (영수증 발송용)
- 기기 ID (사기 방지용)
- 분석 데이터

양대 플랫폼 공통 거절 사유
1. 메타데이터 불일치
거절 원인:
- 스크린샷에 현재 버전과 다른 기능이 포함됨
- 설명에 실제 없는 기능이 명시됨
- 앱 내 가격과 실제 가격이 다름

방지 방법:
- 제출할 때마다 스크린샷 업데이트
- 설명을 실제 기능과 일치시키기
- 모든 설명이 정확한지 테스트
- 오래된 홍보 문구 삭제
2. 오해의 소지가 있는 마케팅
자동 거절 사유:
- 근거 없는 “업계 1위 앱” 문구
- 제한 사항을 숨긴 “무제한” 표현
- 허위 리뷰 또는 평점 조작
- 경쟁사 비방

권장 사항: 구체적이고 사실적으로 작성하세요:
- ✓ “5만 명 이상의 사용자가 함께합니다”
- ✗ “세계 최고의 앱”
- ✓ “연간 플랜 이용 시 최대 30% 할인”
- ✗ “기간 한정 혜택!”
3. 결제 플로우 오류
제출 전 테스트 항목:
- 상품이 정상적으로 로드되는지
- 결제가 성공적으로 완료되는지
- 프리미엄 기능이 즉시 활성화되는지
- 구매 복원 기능이 작동하는지
- 에러 메시지가 사용자 친화적인지
- 네트워크 오류를 적절히 처리하는지
// Comprehensive error handling
async function handlePurchase(productId: string) {
try {
const { customerInfo } = await NativePurchases.purchaseProduct({
productIdentifier: productId
});
if (customerInfo.entitlements.active['premium']) {
unlockPremiumFeatures();
}
} catch (error: any) {
switch (error.code) {
case 'USER_CANCELLED':
// Silent - user backed out
break;
case 'ITEM_ALREADY_OWNED':
await NativePurchases.restorePurchases();
break;
case 'NETWORK_ERROR':
showError('Check your connection and try again.');
break;
default:
showError('Purchase failed. Please try again.');
}
}
}
제출 전 체크리스트

매 제출 전 이 체크리스트를 사용하세요. 상세 테스트 절차는:
- iOS 테스트: iOS Sandbox 테스트 가이드
- Android 테스트: Android Sandbox 테스트 가이드
테스트
- 모든 구독 티어 테스트
- 무료 체험 정상 작동 확인
- Introductory offers 테스트
- 구매 복원 기능 확인
- 여러 기기에서 테스트
- Sandbox/테스트 계정 작동 확인
가격 및 약관
- 모든 플랫폼에서 동일한 가격 적용
- 구독 약관 명확히 표시
- 해지 방법 안내 표시
- 결제 주기 표시
- 무료 체험 기간 정확히 표시
개인정보 보호 및 권한
- 스토어에 개인정보 처리방침 링크 포함
- 앱 내 개인정보 처리방침 접근 가능
- 모든 권한 요청 사유 명시
- Info.plist 설명 문구 명확화 (iOS)
- 데이터 보안 작성 완료 (Android)
메타데이터
- 스크린샷이 현재 버전과 일치함
- 설명이 기능과 일치함
- 더미 텍스트(Placeholder) 없음
- 연령 등급이 정확함
- 모든 설명이 검증 가능함
Code 품질
- 실행 시 크래시 없음
- 모든 기능이 설명대로 작동함
- 에러 핸들링 구현됨
- 로딩 상태 표시됨
- 네트워크 에러 처리됨
리뷰 타임라인 예상

iOS:
- 일반: 24-48시간
- 피크 시즌: 3-5일
- 주말: 심사 없음
- 긴급 심사: 치명적 버그 시 가능
Android:
- 최초 심사: 평균 7일
- 업데이트: 보통 더 빠름
- 순차적 출시: 언제든 라이브 가능
- 정책 위반: 즉시 중단 가능
유용한 팁: 주말 심사 지연을 피하려면 월~수요일 사이에 iOS 앱을 제출하세요.
심사 거절 시 대처 방법

1단계: 문제 파악하기
- 거절 통지서를 꼼꼼히 읽기
- 명시된 특정 가이드라인 확인하기
- 제공된 예시 살펴보기
- 피드백에서 패턴 찾아내기
2단계: 철저히 수정하기
- 증상이 아니라 근본 원인을 해결하기
- 수정 사항을 철저히 테스트하기
- 모든 변경 사항 기록하기
- 전/후 스크린샷
3단계: 전문적으로 답변하기

iOS Resolution Center:
Thank you for the feedback. I have addressed the issue:
Issue: Subscription pricing not clear upfront
Fix: Added explicit pricing display on subscription screen
showing "$9.99/month" before purchase button. Also added
cancellation instructions on the same screen.
Screenshots showing changes are attached. Test account
provided in App Review Notes.
Android 이의 신청:
Subject: Policy Violation Appeal - [App Name]
I have received notification regarding [Policy X.Y].
Changes made:
1. Updated subscription UI to show all pricing upfront
2. Added clear cancellation instructions
3. Implemented restore purchases functionality
Version [X.Y.Z] addresses all concerns. Test account
credentials provided below for verification.
4단계: 빠르게 재제출하기
- 재제출 시 검토 속도 향상
- 보통 24시간 이내 완료
- 테스트 계정 포함
- 이전 제출 내역 참조
2025년 업데이트 및 신규 요구사항
iOS 변경 사항
AI 기능 공개 사항 (신규)
- AI 생성 콘텐츠 표시 필수
- AI 활용 방식 설명
- 콘텐츠 안전성 문서화
구독 정보 명확성 강화
- 요금제 간 비교 표 필수
- 저렴한 옵션 은닉 금지
- 업그레이드/다운그레이드 경로 명시
개인정보 보호 강화
- Section 5.1.1 심사 강화
- 데이터 수집 근거 검토 강화
- 아동용 앱 규정 강화
Android 변경 사항
대체 결제 방식 (지역별)
- EEA 및 한국 허용
- Google Play 옵션 필수 제공
- 서비스 수수료 인하
구독 API 요구사항
- 신규 앱은 monetization.subscriptions API 사용 필수
- 기존 결제 API 지원 종료 예정
- 개선된 구독 관리 도구
성공을 위한 베스트 프랙티스
1. 적절한 SDK 사용하기
이 @capgo/native-purchases 플러그인이 양쪽 플랫폼을 올바르게 처리합니다:
// Single API for iOS and Android
await NativePurchases.configure({
apiKey: 'your_api_key'
});
// Automatically uses correct billing system
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly']
});
// Platform-specific logic handled automatically
await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly'
});
2. 올바른 에러 핸들링 구현
모든 결제 상태를 매끄럽게 처리하세요:
- 사용자 취소 (조용히 처리)
- 네트워크 에러 (재시도 옵션)
- 이미 보유 중 (복원)
- 상품 이용 불가 (사용자 안내)
- 결제 대기 중 (나중에 확인)
3. 명확한 안내 제공
사용자는 항상 다음 사항을 알아야 합니다:
- 구매하려는 상품 내용
- 결제 금액
- 결제 예정일
- 구독 취소 방법
- 무료 체험 종료 후 안내
4. 철저한 테스트
iOS Sandbox:
- App Store Connect에서 테스트 계정 생성
- 기기 설정 (설정 > App Store > Sandbox)
- 구독 기간 단축 주의
Android 라이선스 테스트:
- Play Console에 테스트 계정 추가
- “테스트 구매” 알림 확인
- 실제 결제는 발생하지 않음
리소스
플랫폼 문서
구현 가이드
상세 리뷰 가이드
전문가 도움이 필요하신가요?
앱 리뷰 과정에서 막히거나 직접적인 도움이 필요하신가요? Capgo 팀이 인앱 결제 구현 및 리뷰 준비를 위한 전담 지원을 제공합니다.
상담 예약하기 다음 사항에 대한 맞춤형 도움을 받으세요:
- IAP 구현 리뷰
- App Store 리뷰 준비
- 심사 제출 전략 가이드
- 리젝 해결 지원
- 설정 및 테스트 지원
수백 개의 앱이 성공적으로 리뷰를 통과하도록 도왔습니다!
마치며
2025년 인앱 결제(IAP) 앱 리뷰를 통과하려면 세심한 주의와 명확한 소통, 그리고 올바른 구현이 필요합니다. 핵심 요약은 다음과 같습니다:
- 투명성 준수는 필수 - 가격 정보를 항상 사전에 공개하세요
- 플랫폼 규정 준수 - 필수 결제 시스템을 사용하세요
- 철저한 테스트 - 리뷰어보다 먼저 문제를 발견하세요
- 명확한 커뮤니케이션 - 사용자가 혼란을 느끼지 않아야 합니다
- 문서 준비하기 - 테스트 계정을 미리 준비하세요
이 가이드를 따르고 native-purchases 플러그인 같은 적절한 도구를 사용하면 첫 심사 통과 확률을 크게 높일 수 있습니다.
기억하세요: 리뷰어는 사용자를 존중하고 가이드라인을 준수하는 앱을 찾습니다. 이런 마음가짐으로 빌드하면 승인은 자연스럽게 따라옵니다.
인앱 결제 구현에 도움이 필요하신가요? 저희 문서를 확인하거나 포괄적인 문서는 갖추고 있습니다. 커뮤니티에 문의하여 지원을 받으세요.
2025년 인앱 결제 App Store 심사 통과 방법에서 계속하기
사용 중이라면 2025년 인앱 구매 App Store 심사 통과 방법 스토어 승인 및 배포를 계획하려면, 다음 항목과 연결하세요 @capgo/capacitor-in-app-review @capgo/capacitor-in-app-review의 구현 세부 사항에 대해서는, @capgo/capacitor-in-app-review 사용하기 @capgo/capacitor-in-app-review 사용하기에서 네이티브 기능은, @capgo/capacitor-native-market @capgo/capacitor-native-market의 구현 세부 사항은, @capgo/capacitor-native-market 사용하기 @capgo/capacitor-native-market 사용하기의 네이티브 기능은, Capacitor OTA 업데이트: App Store 승인 가이드 Capacitor OTA 업데이트: App Store 승인 가이드의 실무 맥락은.