내용으로 건너뛰기

iOS 자동 갱신 구독 만들기

GitHub

iOS 앱에서 콘텐츠, 서비스 또는 프리미엄 기능에 대한 반복적인 접근을 제공하는 자동 갱신 구독입니다. 이 가이드는 App Store Connect에서 구독을 만드는 방법을 안내합니다.

자동 갱신 구독은 사용자가 취소하지 않는 한 각 billing 기간의 끝에서 자동으로 갱신됩니다. 그들은 다음과 같은 경우에 이상적입니다:

  • 프리미엄 콘텐츠 및 기능
  • 광고 없는 경험
  • 클라우드 스토리지 및 동기화
  • 스트리밍 서비스
  • 전문가 도구 및 유틸리티

구독을 만들기 전에 다음을 수행해야 합니다:

  1. 구독 그룹 만들기 구독을 분류하기 위해
  2. Apple Developer Program 회원이되어야 합니다.
  3. App Store Connect에서 은행 및 세금 정보를 완료해야 합니다.

구독 만들기

구독 만들기 섹션
  1. 구독으로 이동

    App Store Connect에서 앱을 선택하고 Monetize > 구독으로 이동.

    구독 그룹을 선택하거나 필요 시 새로운 그룹을 생성하세요.

    구독으로 이동하세요

  2. 새로운 구독 만들기

    구독 그룹 옆의 + 아이콘을 클릭하여 새로운 구독을 추가하세요.

  3. 기본 정보 입력

    참조 이름: 내부 사용자에게 표시되지 않는 구독의 설명 이름

    • 예시: "월간 프리미엄", "년간 최고", "기본 플랜"

    상품 ID: 이 구독에 대한 고유 식별자 (이후 변경할 수 없습니다)

    • 형식: com.yourcompany.yourapp.premium_monthly
    • 이름을 사용할 때 설명적이고 소문자 이름을 밑줄로 사용하십시오.
    • native-purchases 플러그인을 구성하기 위해 필수입니다.

    구독 정보를 입력하십시오.

  4. 구독 기간을 설정하십시오.

    구독 기간을 선택하십시오.

    • 1 주
    • 1 개월
    • 2 개월
    • 3 개월
    • 6 개월
    • 1 년

    구독 기간은 사용자가 얼마나 자주 청구되는지 결정합니다.

  5. 가격 설정

    클릭 구독 가격 추가 가격 설정을 위해 클릭하세요:

    기본 영역: 본국을 선택하세요 (일반적으로 국가)

    가격: 구독 가격을 설정하세요

    • 애플은 다른 통화로 자동 변환합니다
    • 애플의 가격 계층 중에서 선택하세요
    • 가치 인식과 시장 가격을 고려하세요

    가격 설정

  6. 가족 공유 (선택 사항)

    가족 공유를 사용할지 결정하세요. 가족 공유를 사용하면 최대 6명의 가족 구성원이 구독에 접근할 수 있습니다.

    활성화할 경우:

    • 가족이 사용할 수 있는 콘텐츠입니다.
    • 가치 제안을 증가시키고 싶습니다.
    • 사업 모델이 지원합니다.

    활성화하지 마세요:

    • 개인 사용자만 구독을 사용하는 경우
    • 콘텐츠는 사용자에게 맞춰져 있습니다.
    • 사용자당 최대 수익을 원합니다.
  7. 국제화 추가

    앱이 지원하는 모든 언어에서 구독 정보를 표시하세요:

    구독 표시 이름: 사용자에게 표시되는 이름 (예: "월간 프리미엄")

    설명: 구독이 포함하는 내용의 짧은 설명

    • 간결하고 이점에 초점을 맞추세요
    • 중요한 기능을 언급하세요
    • 가치 제안을 강조하세요

    국제화 추가

  8. 앱 스토어 홍보 이미지 (선택 사항)

    이 구독에 대한 홍보 이미지를 업로드하세요 (312x390 픽셀):

    • 앱 스토어 구독 페이지에 표시됩니다
    • 앱의 디자인과 일치해야 합니다
    • 구독 이름을 명확하게 포함하세요
  9. 저장하고 제출

    클릭 저장 구독을 만들기 위해

    첫 번째 구독:

    • iOS 구독 만들기
    • 새로운 앱 버전과 함께 제출해야 함
    • 앱 스토어 제출에 포함해야 함

    Independent로 제출할 수 없음

    • 다음 구독에 대한:
    • 직접 Subscriptions 페이지에서 제출할 수 있음
    • 새로운 앱 버전이 필요하지 않음

첫 번째 구독이 승인된 후 사용 가능

구독 상태

구독 상태 섹션

StatusDescriptionCan Test?
Metadata가 누락되었습니다.설정이 완료되지 않았습니다.Yes (테스트 환경)
제출 준비 완료제출 완료하지 않음Yes (테스트 환경)
리뷰 대기 중애플에 제출Yes (테스트 환경)
리뷰 중애플에서 리뷰 중Yes (테스트 환경)
승인됨구매 가능Yes
인증거절됨Yes (테스트 환경)

테스트 모드에서 구독을 테스트할 수 있습니다. ‘메타데이터가 누락됨’ 또는 ‘제출 준비됨’과 같은 메시지를 표시하는 경우도 포함됩니다.

앱에서 사용하기

만들어진 후, 앱에서 구독을 참조하려면 제품 ID를 사용하세요:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch subscription products direct from StoreKit
const { products } = await NativePurchases.getProducts({
productIdentifiers: [
'com.yourcompany.yourapp.premium_monthly',
'com.yourcompany.yourapp.premium_annual',
],
productType: PURCHASE_TYPE.SUBS,
});
products.forEach((product) => {
console.log(`${product.title}: ${product.priceString}`);
console.log(`Duration: ${product.subscriptionPeriod}`);
console.log(`Description: ${product.description}`);
});
// Purchase a subscription (StoreKit 2 automatically handles intro pricing and offers)
try {
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.yourcompany.yourapp.premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Transaction ID:', transaction.transactionId);
// StoreKit receipts are included on iOS for server-side validation
await sendReceiptToBackend(transaction.receipt);
} catch (error) {
console.error('Purchase failed:', error);
}
// Check subscription status using the store's data
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const premium = purchases.find(
(purchase) => purchase.productIdentifier === 'com.yourcompany.yourapp.premium_monthly',
);
if (premium?.isActive) {
console.log('Expires:', premium.expirationDate);
console.log('Will renew:', premium.willCancel === false);
console.log('Store state:', premium.subscriptionState);
unlockPremiumFeatures();
} else {
showPaywall();
}

월 12개월 계약 플랜

월 12개월 계약 플랜

앱 스토어 연결 구독이 월별 청구 플랜과 12개월 계약으로 구성되어 있다면, StoreKit은 제품에 대한 추가 가격 조건을 반환할 수 있습니다. 구매 전에 월별 청구 금액, 총 계약 가격 및 전체 계약 기간을 표시하기 위해 사용하세요.

const yearlyProduct = products.find(
(product) => product.identifier === 'com.yourcompany.yourapp.premium_annual',
);
const monthlyCommitment = yearlyProduct?.pricingTerms?.find(
(term) => term.billingPlanType === 'monthly',
);
if (yearlyProduct && monthlyCommitment) {
console.log('Monthly charge:', monthlyCommitment.billingDisplayPrice);
console.log('Total commitment:', monthlyCommitment.commitmentInfo?.priceString);
await NativePurchases.purchaseProduct({
productIdentifier: yearlyProduct.identifier,
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
});
}

구독 플랜을 완벽하게 구현하려면 iOS 월별 계약 청구 플랜.

최선의 방법

가격 전략

가격 전략

__CAPGO_KEEP_0__
  • 월간 계획: 입장 장벽이 낮아지고 습관이 형성됩니다.
  • 년간 계획: 더 좋은 가치, 더 높은 LTV, 더 낮은 churn
  • 다중 등급: 기본, 프리미엄, 초고급 등급을 사용하여 사용자 세그먼트에 따라 다르게
  • 경쟁 분석: 유사한 앱의 가격을 연구합니다.
  • 일관된 이름 사용: company.app.tier_duration
  • : 등급과 기간을 포함하여 ID를 사용합니다. premium_monthly, ultimate_annual
  • 제품 ID를 변경하지 말라 (영구적이기 때문)
  • 팀 내 모든 제품 ID를 문서화하라
  • 수입에 미치는 영향 고려
  • 공유 동작을 철저히 테스트
  • 마케팅에서 공유 기능을 설명
  • 국제화

구독 이름과 설명을 모두 번역

지역별 가격 차이를 고려
  • Family Sharing
  • Section titled “Localization”
  • 모든 지원 언어에서 표시 테스트
  • 문화 적절한 마케팅 언어 사용

광고 이미지

광고 이미지 섹션
  • 일관된 시각적 스타일 유지
  • 구독 이름 및 주요 이점 포함
  • 시즌별 프로모션을 위한 업데이트
  • 앱의 전체 디자인 언어와 일치

공통 구독 패턴

공통 구독 패턴 섹션

단일 티어 (프리미엄)

단일 티어 (프리미엄) 섹션
Free App + Premium Subscription
- Basic: Free (limited features)
- Premium Monthly: $4.99
- Premium Annual: $39.99 (save 33%)

Multi-Tier (Good, Better, Best)

Multi-Tier (Good, Better, Best) 섹션
- Basic Monthly: $4.99
- Premium Monthly: $9.99
- Ultimate Monthly: $19.99
- Basic Annual: $49.99
- Premium Annual: $99.99
- Ultimate Annual: $199.99

소비 가능한 + 구독형 하이브리드

소비 가능한 + 구독형 하이브리드 섹션
- Credit packs (consumable)
- Monthly subscription (unlimited credits)
- Annual subscription (unlimited + bonus features)

제품 ID가 정확히 일치하는지 확인하세요 (대소문자 구분)

  • 구독이 구독 그룹에 포함되어 있는지 확인하세요
  • 구독 로드 오류
  • 애플 스토어 연결 ID와 매치하는 것을 보장하세요.
  • 상품을 생성한 후 2-3시간 기다려보세요.

구독 제출이 불가능합니다:

  • 필수 필드(이름, 설명, 가격)를 모두 완료하세요.
  • 적어도 한 번의 지역화 추가
  • 은행/세금 정보가 승인되었는지 확인하세요.
  • 첫 번째 구독이 앱 버전을 확인하세요.

가족 공유 설정이 비활성화되었습니다:

  • 이미 활성화되어 비활성화할 수 없습니다.
  • 구독 세부 사항을 확인하세요.
  • 애플 지원팀에 문의하세요.

가격 계층이 사용할 수 없습니다:

  • 일부 지역에서 제한될 수 있습니다
  • 대안 티어를 선택하세요
  • 가격에 대한 질문은 애플에 문의하세요

제품 ID가 유효하지 않습니다

  • 역 도메인 형식이어야 합니다
  • 공백이나 특수 문자를 포함할 수 없습니다
  • 타자 오류를 확인하세요
  • 모든 제품에서 고유성을 확인하세요

다음 단계

다음 단계

추가 리소스

추가 리소스 섹션

자세한 내용은 공식 Apple 문서에서 자동 갱신 가능 구독에 대해.

Create iOS Auto-Renewable Subscription에서 계속하십시오

Create iOS Auto-Renewable Subscription에서 계속하십시오 섹션

iOS Auto-Renewable 구독을 만들 때 스토어 승인 및 배포를 계획하고 Create iOS Auto-Renewable Subscription @capgo/자연스러운 구입 native 구매 기능을 위해 @capgo/native-purchases를 사용합니다. Using @capgo/capacitor-in-app-review @capgo/capacitor-인앱리뷰 구현 세부사항 @capgo/capacitor-인앱 리뷰 사용 native 기능을 위한 @capgo/capacitor-in-app-review에 사용합니다. Using @capgo/capacitor-native-market for capgo 구현 세부사항에 대한 @capacitor-native-market 에서 @Capgo capgo-capacitor-native-market Capgo의 네이티브 기능을 사용하는 @capgo/capacitor-native-market에 대해.