메인 콘텐츠로 건너뛰기
__CAPGO_KEEP_7__

__CAPGO_KEEP_8__

__CAPGO_KEEP_9__

__CAPGO_KEEP_10__

__CAPGO_KEEP_11__

  • 표준 검토: 24-48 시간
  • 피크 기간: 3-5 일 (특히 휴일 시즌)
  • 주말: 검토가 처리되지 않습니다
  • 급속 검토: 중요 버그 수정에 사용할 수 있습니다 (App Store Connect를 통해 요청해야 함)

프로 팁: 주중 초반에 제출하여 주말 지연을 피하세요. 월요일 제출은 수요일까지 검토됩니다.

App Store Connect 상태

  • 제출 준비: __CAPGO_KEEP_0__
  • 심사 중: 애플이 제출을 대기 중입니다
  • 심사 중: 애플의 심사 팀이 앱을 확인 중입니다
  • 개발자 배포 대기: 승인되었습니다. 그러나 개발자의 수동 배포 선택을 기다리고 있습니다
  • 반려 / 해결되지 않은 문제: 승인에 필요한 변경이 필요합니다

Google Play Store 심사 일정 (2026 업데이트)

  • 초기 심사: 3-7 일 (이전 연도보다 훨씬 더 길게)
  • 테스트 게이트 폐쇄: 영향을 받은 새로운 개인 플레이 콘솔 계정에 대해 14일 이상이 걸리면 프로덕션 액세스를 요청할 수 있습니다.
  • 테스트 후 프로덕션 검토: 폐쇄 테스트 요구 사항이 완료된 후 일반적으로 3-7일 후
  • 기존 앱 업데이트: 1-3일
  • 정책 위반: 추가 검토가 트리거되면 14일 이상까지 연장될 수 있습니다.

중요 업데이트: Google은 일부 새로운 플레이 콘솔 계정에 대해 훨씬 더 엄격한 테스트가 필요하다고 요구하기 때문에 자세한 내용은 아래에서 다룹니다.

애플 개발자 계정 설정

: 첫 번째 iOS 릴리스 전에 Apple 측이 올바르게 설정되어 있는지 확인하세요:

  • Capgo 회원 가입 애플 개발자 프로그램 가입
  • 애플 계정에 2단계 인증을 활성화하세요.
  • 구독 유형을 선택하세요:
    • 개인/개인 사업자: 판매자 이름은 앱 스토어에서 법적 개인 이름이 됩니다.
    • 기업: 법적 엔터티, D-U-N-S 번호, 공개 웹사이트, 그리고 Apple의 계약에 회사에 대한 권한을 부여할 수 있는 사람
  • 회원 가입 시 법적 이름을 사용하세요. 첫/마지막 이름 필드에 별명이나 회사 이름을 사용하면 승인 지연이 발생할 수 있습니다.
  • 회원 가입 승인이 완료되면 App Store Connect에 로그인하여 앱 레코드를 생성하세요. 최종 번들 ID, 앱 이름, SKU, 및 기본 언어

애플 개발자 프로그램 회원 가입 페이지

웹에서 애플 회원 가입을 계속하세요

Apple 개발자 엔터티 유형을 선택하세요

중요: Apple은 시간에 따라 최소 SDK 요구 사항을 변경합니다. 2026년 4월 28일부터 앱 스토어 연결에 업로드된 앱은 iOS 및 iPadOS 26 __CAPGO_KEEP_0__ 이상을 사용해야 합니다.Android 테스트의 중요성 iOS & iPadOS 26 SDK or later.

개인 Android 계정의 새로운 사용자에게는 12 명의 테스터가 필요합니다.

Google Play 개발자 계정이 개인 계정으로 생성된 경우

2023년 11월 13일 이후에 생성된 경우, 앱이 생산으로 가기 전에 폐쇄 테스트 기간을 완료해야 합니다:

테스트 기간을 완료하지 않으면 앱이 생산으로 가지 못합니다. Android 테스트의 중요성이것은 대부분의 첫 번째 Android 퍼블리셔가 당황하는 변경 사항입니다:

요구 사항:

  • 최소 12 명의 테스터: 최소 12 명의 테스트를 동의 한 테스터를 모집해야 합니다
  • 14 일간 테스트 기간: 앱은 최소 14 일 연속으로 폐쇄 테스트 상태로 유지해야 합니다
  • 제품 액세스 신청: 테스트 기간이 끝난 후에도 Play Console에서 제품 액세스 신청이 필요합니다
  • 피드백 수집: 발견 된 문제, 수정 된 내용, 테스터가 앱을 사용한 방법을 문서화해야 합니다

테스트 트랙 설정 방법

  1. 폐쇄 테스트 트랙 만들기

    • Google Play Console로 이동
    • 테스트 및 릴리스 > 테스트 > 폐쇄 테스트로 이동하세요.
    • 폐쇄 테스트 트랙에서 새로운 릴리스를 생성하세요.
    • Android App Bundle (.aab)
  2. 테스터를 모집하세요.

    테스터를 찾는 곳:

    • 친구와 가족 (가장 쉬운 시작점)
    • 개발자 커뮤니티 (Reddit의 /r/androiddev, /r/betatests)
    • 소셜 미디어 팔로워
    • 베타 테스트 플랫폼 (BetaList, BetaTesting.com)
    • 대학 학생 (연결이 있다면)

    중요: 테스터에게 다음을 확인하세요.

    • __CAPGO_KEEP_0__
    • __CAPGO_KEEP_1__
    • __CAPGO_KEEP_2__
  3. __CAPGO_KEEP_3__

    • __CAPGO_KEEP_4__
    • __CAPGO_KEEP_5__
    • __CAPGO_KEEP_6__
    • __CAPGO_KEEP_7__
  4. __CAPGO_KEEP_8__

    • __CAPGO_KEEP_9__
    • __CAPGO_KEEP_10__
    • __CAPGO_KEEP_11__
    • 판단할 수 있는 심각한 문제를 해결하기 전에 홍보
  5. 프로덕션으로 승격

    • 14일 동안 12명 이상의 테스트 참여자 중 최소한 1명이 참여한 후
    • __CAPGO_KEEP_0__
    • 모든 충돌 보고서와 피드백을 검토
    • 프로덕션 릴리즈를 생성하고 최종 검토를 위해 제출

구글이 이 기능을 구현한 이유

구글은 이 요구 사항을 구현하기 위해:

  • 저품질 앱 스팸을 줄이기 위해
  • 사용자에게 앱이 적절하게 테스트되었는지 확인하기 위해
  • 실제 사용 패턴을 통해 악성 앱을 식별하기 위해
  • Play 스토어의 전체 품질을 향상하기 위해

Reality Check: 이 기능을 추가하면 최소 2-3주가 더 걸립니다. accordingly 계획하고 테스터를 일찍 모집하세요.

인증 및 로그인 요구 사항

인증 시스템의 적절한 구현이 부족한 경우 가장 일반적인 거절 사유입니다. 특히 소셜 로그인.

애플 로그인 요구 사항 (iOS용 중요)

애플의 규칙: 앱이 3자 소셜 로그인 옵션(Google, Facebook, Twitter 등)을 제공한다면, Sign in with Apple도 제공해야 합니다. Google Sign-In Facebook Login

Apple’s Rule:

  • : If your app offers any third-party social login option (Google, Facebook, Twitter, etc.), you
  • must
  • Twitter/X 로그인
  • LinkedIn 로그인
  • 어떤 다른 세 번째-party 인증 서비스

이것은 NOT 해당합니다.:

  • 이메일/비밀번호만 인증
  • 정부 ID 시스템
  • 기업 SSO 시스템 (앱이 해당 기업에만 해당할 때)
  • 교육 제공자 인증 시스템

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);
  }
}

중요한 고려 사항:

  1. 이메일 개인 정보: 사용자는 이메일을 숨길 수 있습니다. 애플은 개인용 전송 메일 (예: abc123@privaterelay.appleid.com)을 제공합니다.

  2. Your app must handle this.첫 번째 사용자 vs 반복 사용자

  3. : 애플은 첫 번째 인증 후 사용자 정보 (이름, 이메일)만 제공합니다. 이 정보를 저장해야 하며, 이후 로그인 시에는 포함되지 않습니다.버튼 디자인

  4. : 애플은 Sign in with Apple 버튼에 대한 엄격한 디자인 가이드라인을 제공합니다. 공식 자산을 사용하세요.백엔드 인증

: 백엔드 서버에서 항상 사용자 식별 토큰을 확인하고, 클라이언트 측 토큰만 신뢰하지 마세요.

Android 소셜 로그인 요구 사항

: Android는 iOS와 달리 특정 제공자에 대한 요구 사항이 없습니다. Google은 다음 가이드라인을 제공합니다::

  • Must use official Google Sign-In SDK
  • 구글의 브랜딩 가이드라인을 따라야 합니다.
  • 사용자가 제공하는 경우 기본 옵션으로 제공해야 합니다.

다중 플랫폼 개발의最佳 관행: 모바일 플랫폼과 웹 플랫폼에서 동일한 로그인 옵션을 제공하여 일관성을 유지해야 합니다.

  • 이메일/패스워드
  • 애플 로그인 (iOS만, 또는 Android에서 웹 기반 애플 로그인을 지원하는 경우)
  • 구글 로그인
  • 기타 소셜 옵션 (페이스북, 트위터 등)

데모 계정 요구 사항

리뷰에 필수적입니다.: 앱이 로그인 요구 사항을 포함한다면 로그인 제출을 위해 작동하는 데모 자격 증명을 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

일반적인 실수:

  • 만료된 자격 증명을 제공하는 경우
  • 데모 계정은 모든 기능에 접근할 수 없습니다.
  • 전화 인증을 우회하는 방법을 언급하지 않는 경우
  • 샌드박스 결제 세부 정보를 언급하지 않는 경우

모든 앱 스토어는 이제 접근 가능한 개인 정보 보호 정책 및 서비스 약관이 필요합니다. 승인되기 전에 개인 정보 보호 정책 요구 사항

개인 정보 보호 정책은 다음과 같이해야합니다.

개인 정보 보호 정책은 승인되기 전에 제출되어야합니다.

  1. 공개적으로 접근할 수 있습니다

    • 공개 URL (로그인 뒤에 있지 않음)에 호스팅
    • 표준 웹 브라우저에서 로드할 수 있습니다
    • 앱의 언어와 동일한 언어로 이용할 수 있습니다
  2. 이러한 필수 주제를 다룹니다:

    • 수집하는 데이터 (세부 정보)
    • 수집된 데이터 사용 방법
    • 세계적인 제3자와 데이터를 공유하는지 여부
    • 데이터 보유 기간
    • 사용자의 권리 (접근, 삭제, 이동성)
    • 개인 정보 보호 문의에 대한 연락처 정보
    • 13/16세 미만 사용자용 앱의 아동 개인 정보 보호
  3. 앱 내에서 연결되도록

    • 설정 또는 계정 화면에서 접근할 수 있습니다
    • 메뉴 내에 묻지 않도록 한 탭만으로 접근해야 합니다
    • 기본 브라우저 또는 앱 내 브라우저에서 열려야 합니다

개인 정보 보호 정책을 호스팅하는 곳

Option 1: 웹사이트 (추천)

https://yourapp.com/privacy-policy
https://yourapp.com/terms-of-service

Option 2: GitHub 페이지 (무료)

https://yourusername.github.io/app-privacy-policy

Option 3: 개인 정보 보호 정책 생성기 (빠른 시작)

중요: 실제 데이터 처리 방침이 정확히 반영되지 않으면, 시작을 위한 생성기만으로는 충분하지 않습니다. 앱에 맞지 않는 일반 템플릿은 검출될 것입니다.

약관 및 조건 요구 사항

약관 및 조건은 항상 필수적이지 않지만, 다음 경우에는 강력히 권장되고 필요합니다:

  • 앱 내에서 구매 또는 구독을 제공합니다
  • 사용자 생성 콘텐츠가 있습니다
  • 기본 앱 기능 이외의 서비스를 제공합니다
  • 법적 보호를 원합니다

포함되어야 하는 항목:

  • 허용 가능한 사용 정책
  • __CAPGO_KEEP_0__
  • __CAPGO_KEEP_1__
  • __CAPGO_KEEP_2__
  • __CAPGO_KEEP_3__
  • __CAPGO_KEEP_4__

__CAPGO_KEEP_5__

// 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>
  );
}

__CAPGO_KEEP_6__

__CAPGO_KEEP_7__

__CAPGO_KEEP_8__:

  • __CAPGO_KEEP_9__
  • __CAPGO_KEEP_10__
  • __CAPGO_KEEP_11__
  • 사용자에게 실제 연락처가 포함된 지원 URL을 추가하세요
  • 제출 전에 연령 등급 설문조사를 완료하세요

안드로이드 - 구글 플레이 콘솔:

  • 스토어 존재 > 스토어 설정 > 개인 정보 보호 정책
  • 어린이 대상 앱을 위한 필수 항목
  • 모든 앱에 강력히 추천

iOS 개인 정보 보호 식별표 (Privacy Nutrition Labels)

iOS는 "식이표" 형식의 세부 개인 정보 공개가 필요합니다:

선언해야 하는 카테고리:

  • 연락처: 이메일, 이름, 전화번호
  • 금융 정보결제 정보, 신용 카드, 은행 계좌
  • 위치정확한 위치 또는粗略한 위치
  • 사용자 콘텐츠사진, 비디오, 오디오, 메시지
  • 식별자사용자 ID, 장치 ID, 광고 ID
  • 사용 데이터제품 상호 작용, 광고 데이터, 충돌 로그
  • 디아그노스틱충돌 데이터, 성능 데이터

각 데이터 유형에 대해 명시:

  • Whether it’s collected
  • Whether it’s linked to user identity
  • Whether it’s used for tracking
  • The purpose of collection

Common Mistake: SDK를 사용하는 분석 도구가 데이터를 수집하지 않는다고 말하는 것은 잘못입니다. 모든第三자 SDK를 데이터 수집에 대한 ауд이트를 진행하세요.

Google Play 데이터 안전 섹션

iOS와 유사하게, Android는 데이터 안전성 선언이 필요합니다.

Steps:

  1. Play 콘솔 > 앱 콘텐츠 > 데이터 안전성으로 이동하세요.
  2. 데이터 수집에 대한 질문에 답변하세요.
  3. 수집되는 데이터 유형을 지정하세요.
  4. 보안 관행 설명 (암호화 등)
  5. 개인 정보 보호 정책 링크 제공

중요: 이 정보는 법적으로 ràng buộc됩니다. 오보는 앱 제거 및 계정 중단으로 이어질 수 있습니다.

최초 거부 사유

앱 거부 이유를 이해하면 이러한 함정에 빠지지 않도록 도와줍니다:

1. 앱이 충돌하거나 실행되지 않음

이유:

  • 실제 기기 대신 에뮬레이터에서만 테스트
  • 네트워크 오류에 대한 오류 처리 누락
  • 사용할 수 없는 API 엔드포인트가 하드 코딩되어 있습니다.
  • 특정 장치 기능 (카메라, GPS) 의존

How to Prevent:

// 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 개의 모델)
  • 잘못된 네트워크 환경에서 테스트 (네트워크 링크 컨디셔너 사용)
  • 비행 모드에서 테스트
  • 권한이 거부된 경우 테스트
  • 새로운 설치 (캐시된 데이터가 없는 경우)에서 테스트

2. 핵심 기능이 누락되거나 깨진 경우

왜 발생하는가:

  • 스크린샷에 표시된 기능이 아직 존재하지 않음
  • 데모 계정은 광고된 기능에 접근할 수 없음
  • 프리미엄 기능이 표시되지만 구현되지 않음
  • “앱 내에서 곧 출시될 것” placeholder

사용자가 제출하는 것을 방지하는 방법:

  • 모든 광고된 기능이 완료된 후에만 제출하십시오
  • 데모 계정에 전체 접근 권한이 있는지 확인하십시오
  • 제출하기 전에 완료되지 않은 기능을 제거하거나 비활성화하십시오
  • 스크린샷을 현재 빌드와 정확히 일치하도록 업데이트 하십시오

3. 사용자 연령에 맞지 않는 콘텐츠

이유는 무엇인가요:

  • 4세 이상의 연령 등급이 설정되어 있지만 앱에는 사회 기능이 포함되어 있습니다
  • 설정된 연령 등급과 실제 콘텐츠가 일치하지 않습니다
  • 사용자 생성 콘텐츠가 미리 모니터링되지 않았습니다
  • 미리 모니터링되지 않은 외부 콘텐츠에 대한 링크가 있습니다

__CAPGO_KEEP_0__:

__CAPGO_KEEP_1__:

  • __CAPGO_KEEP_2__
  • __CAPGO_KEEP_3__
  • __CAPGO_KEEP_4__
  • __CAPGO_KEEP_5__

__CAPGO_KEEP_6__:

  • __CAPGO_KEEP_7__
  • __CAPGO_KEEP_8__
  • __CAPGO_KEEP_9__
  • __CAPGO_KEEP_10__
  • __CAPGO_KEEP_11__

중요: 사용자들이 서로 콘텐츠를 공유할 수 있다면, 다음이 필요합니다:

  • 콘텐츠 관리 시스템
  • 신고/차단 기능
  • rõ한 커뮤니티 지침
  • 필요한 경우 나이 제한

4. 속임수 또는 허위 광고

왜 일어나는가:

  • 앱 이름이 실제로 존재하지 않는 기능을.promise
  • 경쟁사 또는 모의화된 스크린샷
  • 허위 리뷰 또는 평점 조작
  • 설명이 증명되지 않은 초월적인 표현

예상치 못한 문제 메타데이터의 예:

BAD:

  • 앱 이름: "최상의 피트니스 트래커 - #1 앱"
  • 설명: "최대 혁신적인 앱이 만들어졌습니다!"
  • 스크린샷: 일반적인 주식 사진

GOOD:

  • 앱 이름: "FitTrack - 워크아웃 로거"
  • 설명: "커스텀 가능한 루틴과 진행 차트를 사용하여 운동 기록을 관리하세요."
  • 스크린샷: 현재 빌드에서 실제 앱 화면

5. 부족한 테스트 (특히 안드로이드 클로즈드 테스트)

이것이 왜 일어나는지:

  • 필요한 14일 테스트 기간을 생략하는 경우
  • Not enough testers are being recruited
  • Testers are not actually using the app
  • Crash monitoring is not available during testing

How to Prevent:

  • Testers recruitment should start 3-4 weeks before planned launch
  • Firebase Crashlytics or similar should be used during testing
  • Testers should be actively engaged (surveys, feedback forms)
  • Critical issues should be fixed before promoting to production

6. 권한이 없는 이유

Why It Happens:

  • 위치 요청은 사용하지 않음
  • 카메라 권한이 설명되지 않음
  • __CAPGO_KEEP_0__ 접근 허용
  • __CAPGO_KEEP_0__ 위치 정보 사용

문제 해결 방법:

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>

안드로이드 - 권한 전략:

<!-- 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 전용 요구 사항

애플 스토어 스크린샷 및 미리보기

필요한 크기:

  • 6.7” 아이폰: 1290 x 2796
  • 13” 아이패드: 2064 x 2752
  • 12.9” 아이패드: 2048 x 2732

중요: iPad을 지원하는 앱이라면 iPad 스크린샷을 업로드해야 합니다. iPhone 스크린샷은 iPad 슬롯에 맞추지 마세요.

스크린샷 최적화:

  • 실제 앱 콘텐츠를 보여주세요 (모의 콘텐츠는 피하세요)
  • 상태바를 제거하거나 현실적인 콘텐츠를 보여주세요
  • 모든 지원 언어에 맞게 지역화하세요
  • 텍스트 오버레이를 과도하게 사용하지 마세요
  • 첫 2-3 스크린샷에서 주요 기능을 보여주세요

앱 스토어 연결 메타데이터 설정

제출하기 전에 다음 앱 스토어 연결 필드를 완료하세요:

  • 개인정보 보호 정책 URL: iOS 앱에는 필수입니다
  • 지원 URL: 필요하고 실제 연락처로 연결되어야 합니다.
  • 등급 평가: 앱을 출시하기 위해 설문조사를 완료하세요.
  • 앱 리뷰 정보: 리뷰 팀에 대한 명확한 설명, 로그인 필요 시 demo 계정 정보, 리뷰 연락처를 추가하세요.
  • 수출 규제: 암호화에 대한 질문에 답하거나, ITSAppUsesNonExemptEncryption 적절한 경우 반복하지 않도록 업로드마다 동일한 답변을 하지 않도록 설정하세요. Info.plist 테스트 플라이트 전 앱 리뷰

: 실제 테스트 플라이트를 한 번 진행하세요.

프로덕션 리뷰

  • TestFlight에서 정확한 빌드를 설치하세요.
  • 구매 후 리뷰에 사용할 계정으로 로그인하세요.
  • 구매, 복원 및 취소 경로를 따라가세요.
  • 리뷰어는 숨겨진 설정 없이 주요 기능에 접근할 수 있는지 확인하세요.
  • iPhone과 iPad에서 테스트하세요. 둘 다 지원되는지 확인하세요.

요구 사항:

  • 15-30초 길이
  • 실제 앱 화면을 보여주세요.
  • 간단한 텍스트 오버레이 포함 가능
  • 음악이 포함되지 않아야 합니다. 저작권 문제가 있는 음악은 사용하지 마세요.
  • 스크린샷과 동일한 해상도

애플 로그인 구현

iOS 검토를 위해 사회적 로그인 시 중요합니다.

인앱 구매 요구 사항

디지털 상품이나 서비스를 제공하는 경우:

필수 공개 정보:

  • 구매 전에 가격이 명확합니다.
  • 구독 조건이 명확하게 표기되어 있습니다.
  • 취소 안내가 표시되어 있습니다.
  • 구매 복원 버튼

예시 구독 화면(준수):

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>
  );
}

안드로이드 전용 요구 사항

구글 플레이 콘솔 계정 설정

__CAPGO_KEEP_0__에 Android 첫 번째 릴리스 전에 Play Console 계정과 앱 쉘이 존재하는지 확인하세요:

  • __CAPGO_KEEP_1__에서 개발자 계정을 만들세요. Play Console 가입
  • Play Console에서 Home > 앱 만들기
  • 기본 언어, 앱/게임 종류, 지원 이메일을 선택하세요.
  • 필수 Play 정책, 수출, Play 앱 서명 선언을 수락하세요.
  • 앱이 무료 또는 유료

중요: Google이 유료 앱을 무료로 변경할 수 있지만, 앱이 무료로 제공된 후에는 유료로 변경할 수 없습니다.

앱 번들 요구 사항

중요: Google Play는 Android 앱 번들 (.aab) 형식이 아닌 APK를 요구합니다.

# 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) 이상을 대상으로 해야 합니다.

안드로이드/앱/빌드.gradle 업데이트:

android {
    compileSdkVersion 35

    defaultConfig {
        targetSdkVersion 35
        minSdkVersion 23  // Minimum supported version
    }
}

구글 플레이 데이터 안전

이미 위에 설명된 바와 같이, 안드로이드 승인에 절대적으로 중요합니다.

폐쇄 테스트 트랙 (현재 요구 사항)

새로 생성된 개인 개발자 계정에 대한 큰 문제: 이 문서의 앞부분에 자세히 설명된 12명 테스터, 14일 요구 사항입니다.

Timeline:

  1. 1주차: 테스터 모집, 폐쇄 테스트 환경 설정
  2. 2-3주차: 활성 테스트 기간 (14일 이상)
  3. 4주차: 문제 해결, 프로덕션 릴리즈 준비
  4. 5주차: 프로덕션 리뷰 제출

대상자 및 콘텐츠 등급

콘텐츠 등급 설문조사:

  • 모든 앱에 필요
  • 10-15분 정도 소요
  • 콘텐츠 등급 결정 (모든 사람, 청소년, 성인 등)
  • 콘텐츠가 답변에 영향을 미치는 경우 콘텐츠가 변경될 때마다 업데이트

포함된 주제:

  • 폭력
  • 성적 내용
  • 비속어
  • 제어 약물
  • 도박
  • 사용자 상호 작용 기능

중요사용자 생성 콘텐츠 또는 사회 기능이 있는 경우, 이를 공개하고 중재를 구현해야 합니다.

스토어 목록 요구 사항

필수 자산:

  • 앱 아이콘 (512 x 512 PNG)
  • 기능 그래픽 (1024 x 500 JPG 또는 PNG)
  • 전화 스크린샷 (최소 2개, 최대 8개)
  • 7” 태블릿 스크린샷 (권장)
  • 10” 태블릿 스크린샷 (권장)

설명 요구 사항:

  • 짧은 설명 (80자 이내)
  • 전체 설명 (4000자 이내)
  • 앱 기능을 정확하게 설명해야 함
  • 연락처 정보나 가격 정보를 포함해서는 안 됨

제출 전 검토 목록

제출하기 전에 이 포괄적인 체크리스트를 확인하세요:

기술 요구 사항

  • 실제 기기에서 앱이 성공적으로 시작됩니다
  • 모든 스크린샷에 표시된 기능이 작동합니다.
  • 장치나 콘텐츠가 없는 경우 표시되지 않습니다.
  • 모든 세 번째-party API 키는 프로덕션 키입니다.
  • 네트워크 오류 처리가 구현되었습니다.
  • 권한 요청에는 명확한 설명이 포함됩니다.
  • 네트워크 조건이 좋지 않아도 앱이 충돌하지 않습니다.
  • 권한이 거부된 경우 테스트되었습니다.
  • 최소 지원 OS 버전에서 테스트되었습니다.
  • 메모리 누수가 확인되고 수정되었습니다.

인증 및 로그인

  • 소셜 로그인 사용 시, iOS에서 Sign in with Apple이 포함됩니다.
  • 리뷰 노트에 demo 계정 자격 증명이 제공됩니다.
  • Demo 계정은 모든 기능에 접근할 수 있습니다.
  • 비밀번호 재설정 흐름이 작동합니다.
  • 로그아웃 기능이 올바르게 작동합니다.
  • GDPR/CCPA에 의해 필요로 하는 계정 삭제 옵션이 사용할 수 있습니다.
  • 개인 정보 정책이 공개적으로 접근할 수 있습니다.
  • 앱 스토어 목록에 개인 정보 정책 URL이 추가되었습니다.
  • 서비스 약관이 공개적으로 접근할 수 있습니다 (적용 시).
  • 개인 정보 정책이 앱 내 설정 화면에서 연결됩니다.
  • iOS의 개인 정보 영양 표가 정확합니다.
  • Android의 데이터 안전 섹션 완료되었습니다.
  • 모든 데이터 수집 목적이 설명됩니다.
  • 세 번째-party SDK 데이터 수집에 대한 정보가 공개됩니다.

내용 및 메타데이터

  • 앱 이름은 키워드 스토핑이 없는 지침을 따릅니다.
  • 설명은 실제 기능을 정확하게 설명합니다.
  • 스크린샷은 실제 현재 앱 화면을 보여줍니다.
  • 스크린샷은 모든 지원 언어에 맞게 지역화되어 있습니다.
  • competitor에 대한 언급이 설명에 없습니다.
  • 증거가 없는 경우 superlatives가 없습니다.
  • 실제 콘텐츠와 일치하는 나이 등급이 있습니다.
  • 문의 이메일은 모니터링됩니다.

iOS 전용

  • Sign in with Apple이 implemented(사회 로그인 사용 시)
  • 모든 필요한 스크린샷 크기 제공
  • iPad 지원이 활성화되면 실제 iPad 스크린샷 업로드
  • Info.plist 권한 설명이 명확합니다
  • 실제 연락처 정보가 포함된 지원 URL 추가
  • App Store Connect에 개인 정보 보호 정책 URL 추가
  • 연령 등급 설문조사 완료
  • 수출 규정에 대한 올바른 답변
  • 앱 리뷰 연락처 및 비만료 데모 계정 제공
  • iOS 15.0 이상 대상
  • IAP의 경우 가격이 명확하고, 구매 취소 버튼이 존재
  • Android나 다른 플랫폼에 대한 참조가 없음

Android Specific

  • 앱 번들 (.aab) 형식 사용
  • API 35 이상으로 설정
  • 콘텐츠 등급 설문조사 완료
  • 기능 그래픽 업로드
  • Play 콘솔 계정에 따라 12명 14일간 폐쇄 테스트 완료
  • 테스트 중 발생한 충돌 보고서 검토 및 수정
  • iOS나 다른 플랫폼에 대한 참조 없음

현재 Android 테스트 중

  • Play 계정에 따라 폐쇄 테스트를 위한 12명 이상의 테스터 모집
  • 폐쇄 테스트 트랙 생성
  • 14일 연속 테스트 완료
  • 앱이 실제로 사용되었는지 (설치만 한 경우 제외)
  • 테스트 중에 충돌 모니터링이 활성화되었습니다
  • 테스트 중에 심각한 버그가 수정되었습니다
  • 테스트자들의 피드백이 문서화되었습니다

리뷰 노트: 포함해야 할 내용

리뷰 노트가 훌륭하다면 즉시 승인과 거부의 차이를 만들 수 있습니다. 포함해야 할 내용은 다음과 같습니다.

리뷰 노트 템플릿

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

거부 시 처리 방법

첫 번째 제출 시 거부는 흔한 일입니다. 어떻게 처리해야 할까요?

거절 후 단계

  1. 거절 내용을 꼼꼼히 읽어보세요

    • __CAPGO_KEEP_0__ (예: 4.3, 5.1.1)
    • __CAPGO_KEEP_1__의 댓글을 꼼꼼히 읽어보세요
    • __CAPGO_KEEP_2__가 제공한 스크린샷을 찾으세요
  2. __CAPGO_KEEP_3__를 이해하세요

    • __CAPGO_KEEP_4__에서 해당 규칙을 공식 문서에서 확인하세요
    • __CAPGO_KEEP_5__에서 유사한 사례를 찾으세요
    • __CAPGO_KEEP_6__인지 확인하세요
  3. __CAPGO_KEEP_7__를 고치세요

    • __CAPGO_KEEP_8__만 고치지 말고 제대로 고치세요
    • __CAPGO_KEEP_9__를 철저히 테스트하세요
    • __CAPGO_KEEP_0__을 문서화하세요.
  4. __CAPGO_KEEP_0__에 적절하게 반응하세요.

    거절이 정확하다면:

    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.
  5. 급히 다시 제출하세요.

    • 재제출은 일반적으로 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)

거절: '개인 정보 보호 정책이 누락되었습니다.'

Response:

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 - 최소 기능성 준수하지 않음”

이건 더 어려운 문제입니다. 앱으로 인정받아야 하는 최소한의 기능을 제공하지 않는다는 뜻입니다. Response:

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.

승인 후 최적화

축하합니다! 앱이 승인되었습니다. 그 상태를 유지하는 방법을 알려드리겠습니다.

런칭 후 모니터링

중요한 지표:

  • 비정상 종료율 (1% 이하로 유지하세요.)
  • ANR율 (안드로이드 - 0.5% 이하로 유지하세요.)
  • 앱 스토어/플레이 스토어 평점
  • 리뷰 내용 (모든 리뷰에 응답하세요.)
  • 사용자 보고된 버그

__CAPGO_KEEP_0__:

  • __CAPGO_KEEP_1__
  • __CAPGO_KEEP_2__
  • __CAPGO_KEEP_3__
  • __CAPGO_KEEP_4__

__CAPGO_KEEP_5__

__CAPGO_KEEP_6__

  • __CAPGO_KEEP_7__
  • __CAPGO_KEEP_8__
  • __CAPGO_KEEP_9__
  • __CAPGO_KEEP_10__
  • __CAPGO_KEEP_11__

규정 준수 유지

년간 요구 사항:

  • 안드로이드 콘텐츠 등급 갱신 (매년 필요)
  • 개인 정보 보호 정책 갱신 (사용 방법 변경 시)
  • 콘텐츠 변경 시 연령 등급 갱신 검토 및 업데이트
  • 제 3 자 SDK 의 준수 여부 감사

연속적인 모니터링:

  • 지침 변경 사항에 대한 최신 정보 유지
  • 애플/구글 개발자 뉴스레터 구독
  • 개발자 커뮤니티 참여
  • 앱 스토어/플레이 스토어 정책 블로그 참조

자원 및 추가 자료

공식 문서

Apple:

Google:

커뮤니티 리소스

개인 정보 보호 정책 도구

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__ __CAPGO_KEEP_3__

  • 앱 리뷰에 도움이 필요하세요?
  • 앱 리뷰에 대한 전문적인 도움을 원하거나 첫 번째 시도에서 리뷰를 통과하기 위해 압도된 경우, 우리는 도와드리겠습니다!
  • __CAPGO_KEEP_4__
  • __CAPGO_KEEP_5__
  • 앱 스토어 및 플레이 스토어 리뷰 준비
  • 개인 정보 보호 정책 및 법적 문서 검토
  • 애플과 함께 로그인 구현

테스트 전략 및 테스터 모집

Conclusion

첫 번째 앱을 제출하는 것은 두려울 수 있지만, 적절한 준비가 있으면 첫 번째 시도에서 검토를 통과할 수 있습니다. 다음의 중요한 점을 기억하세요:

  1. 시작하기: 특히 Android - 12명의 테스터를 최소 3주 전에 계획된 출시일 전에 모집하세요
  2. 개인정보 우선: 개인정보 정책이 준비되어 있고 데이터 처리 방침이 정확하게 반영되어야 합니다
  3. Apple Sign-In: iOS에서 사용하는 소셜 로그인 시, Sign in with Apple을 포함해야 합니다
  4. 테스트 철저히: 실제 장치에서 테스트하고, 네트워크가 좋지 않은 환경에서 테스트하고, 권한이 거부된 환경에서 테스트하세요
  5. 진실되게: 정확한 메타데이터와 개인정보 공개는 거부와 법적 문제를 예방합니다
  6. 상세 리뷰 노트: 리뷰어들이 앱을 빠르게 이해할 수 있도록 도와주세요

현재 Android 테스트 요구 사항은 프로세스를 더 오래 지속하지만, 결국은 더 나은 앱과 출판 후 문제가 적은 앱으로 이어집니다. Android 제출을 위해 추가 3-4주를 계획하고 성공을 위해 잘 준비하십시오.

앱 출시를 위한 좋은 행운을 빕니다! 심사에서 거절되더라도, 그것은 학습의 기회입니다. 대부분의 성공적인 앱은 승인 전 여러 번의 심사를 거칩니다.

혼자 가고 싶지 않다면? 상담을 예약하세요 전문가들이 여러분을 이 과정을 안내해 드리겠습니다.


__CAPGO_KEEP_0__의 라이브 업데이트 솔루션을 확인하세요 Capgo’s live update solution 앱 스토어 심사를 거치지 않고도 앱 업데이트를 위한MOOTH하게 업데이트하세요.

The Complete First-Time App Review Guide for 2026 - iOS and Android에서 계속 진행하세요

이미 사용 중이라면 2026년 첫 번째 앱 리뷰 가이드 - iOS 및 Android __CAPGO_KEEP_0__과 연결하여 보안 및 규정 준수 계획을 세우세요. 암호화 __CAPGO_KEEP_0__의 암호화 구현 세부 사항에 대한 규정 준수 __CAPGO_KEEP_0__의 규정 준수 구현 세부 사항에 대한 Capgo 보안 스캐너 Capgo 보안 스캐너의 제품 워크플로에 대한 Capgo 보안 Capgo 보안의 제품 워크플로에 대한 Capgo 트러스트 센터 Capgo 트러스트 센터의 제품 워크플로에 대한

Capacitor 앱에 대한 실시간 업데이트

웹-layer 버그가 활성화된 경우, 앱 스토어 승인 대기 없이 Capgo를 통해 패치를 배포하세요. 사용자는 배경에서 업데이트를 받으며, 네이티브 변경은 일반적인 리뷰 경로에 남아 있습니다.

시작하기

블로그에서 최신 소식

Capgo는 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.