내용으로 건너뛰기

iOS 자동 갱신 구독을 만들기

GitHub

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

개요

개요

자동 갱신 구독은 사용자가 취소할 때까지 각 billing 기간의 끝에서 자동으로 갱신됩니다. 이들은 다음에 적합합니다:

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

구독을 만들기 전에 반드시:

  1. 구독 그룹 만들기 구독을 조직하기 위해
  2. Apple Developer Program 회원이 활성화된 상태
  3. App Store Connect에서 은행 및 세금 정보 완료

구독 만들기

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

    앱 스토어 연결에서 앱을 선택하고 Monetize > 구독으로 이동.

    구독 그룹을 선택하거나 필요 시 새로운 그룹을 만들 수 있습니다.

    구독으로 이동

  2. 새로운 구독 만들기

    구독 그룹 옆에 있는 + icon을 클릭하여 새로운 구독을 추가합니다.

  3. 기본 정보 입력

    참조 이름: 고객 전용 내부 이름 (고객에게 표시되지 않음)

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

    제품 ID: 이 구독에 대한 고유 식별자 (이후 변경할 수 없음)

    • 형식: com.yourcompany.yourapp.premium_monthly
    • 사용 설명을 포함한 소문자 이름에 언더스코어를 사용
    • native-purchases 플러그인을 구성하기 위해 필수

    구독 세부 정보 입력

  4. 구독 기간 설정

    선택 가능한 옵션에서 구독 기간을 선택:

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

    결제 빈도는 사용자에게 얼마나 자주 청구되는지에 영향을 미칩니다.

  5. 설정 가격

    클릭 구독 가격 추가 가격 구성하기:

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

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

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

    가격 구성

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

    가족 공유를 활성화하여 최대 6명의 가족 구성원이 구독에 접근할 수 있도록 하려면 결정하세요.

    활성화 조건:

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

    다음 경우에는 비활성화하세요:

    • 구독은 개인 사용자만을 위한 것입니다.
    • 콘텐츠는 사용자에게 맞춤화되어 있습니다.
    • 사용자당 최대 수익을 원합니다.
  7. 지역화 추가

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

    구독 이름: 고객에게 보이는 이름 (예: "월간 프리미엄")

    : 구독이 포함하는 내용의 간략한 설명: 구독이 포함하는 내용의 설명

    • __CAPGO_KEEP_0__를 간결하고 이점에 초점을 맞춘 것처럼 유지하세요.
    • __CAPGO_KEEP_0__의 주요 기능을 언급하세요.
    • __CAPGO_KEEP_0__의 가치 제안을 강조하세요.

    __CAPGO_KEEP_0__을 추가하세요.

  8. 앱 스토어 프로모션 이미지 (선택 사항)

    __CAPGO_KEEP_0__의 이 구독을 위한 프로모션 이미지를 업로드하세요 (312x390 픽셀):

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

    클릭 저장 구독을 만들기 위해 제출하세요.

    첫 번째 구독:

    • 새로운 앱 버전과 함께 제출해야 함
    • 다음 App Store 제출에 포함
    • 독립적으로 제출할 수 없음

    후속 구독:

    • 구독 페이지에서 직접 제출할 수 있음
    • 새로운 앱 버전이 필요하지 않음
    • 첫 번째 구독 승인 후 사용 가능

구독 상태는 다음과 중 하나가 될 것입니다.

상태설명테스트 가능 여부
미제공 메타데이터설정 미완료Yes (sandbox)
제출 준비완료但미제출Yes (sandbox)
__CAPGO_KEEP_0____CAPGO_KEEP_1____CAPGO_KEEP_2__
__CAPGO_KEEP_3____CAPGO_KEEP_4____CAPGO_KEEP_2__
__CAPGO_KEEP_5____CAPGO_KEEP_6____CAPGO_KEEP_7__
__CAPGO_KEEP_8____CAPGO_KEEP_9____CAPGO_KEEP_2__

앱에서 사용하기

앱에서 사용하기

구독이 생성되면, 제품 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 월간 결제 청구 계획.

Best Practices

Best Practices

가격 전략

Pricing Strategy
  • 월간 계획: 입지 비용이 낮아져 습관을 형성
  • 년간 계획: 더 좋은 가치, 높은 LTV, 낮은 churn
  • 여러 계층: 기본, 프리미엄, 최고급 사용자 세그먼트를 위한
  • 경쟁 분석: 유사한 앱의 가격을 조사하세요.
  • 일관된 이름을 사용하세요: company.app.tier_duration
  • 기간 및 등급을 포함한 ID: premium_monthly, ultimate_annual
  • 제품 ID를 변경하지 마세요 (영구적입니다).
  • 팀에 모든 제품 ID를 문서화하세요.
  • 수입에 미치는 영향을 고려하세요.
  • 공유 동작을 철저히 테스트하세요.
  • Family Sharing
  • 마케팅에서 공유 기능을 전달하는 방법을 설명하십시오

국제화

국제화
  • 모든 구독 이름과 설명을 번역하십시오
  • 지역 가격 차이점을 고려하십시오
  • 모든 지원 언어에서 표시 테스트하십시오
  • 문화적으로 적합한 마케팅 언어를 사용하십시오

홍보 이미지

홍보 이미지
  • 일관된 시각 스타일 유지하십시오
  • 구독 이름과 주요 이점 포함하십시오
  • 시즌별 프로모션을 위해 업데이트 하십시오
  • 애플리케이션의 전체 디자인 언어를 일치시킵니다.

일반 구독 패턴

일반 구독 패턴

단일 티어 (프리미엄)

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

좋은, 더 좋은, 최고의

좋은, 더 좋은, 최고의
- 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가 정확히 일치하는지 (대/소문자 구분) 확인하세요.
  • 구독이 구독 그룹에 포함되어 있는지 확인하세요.
  • 앱 스토어 연결에 등록된 번들 식별자가 정확한지 확인하세요.
  • 제품을 생성한 후 2-3시간 기다려보세요.

구독 제출이 불가능한 경우:

  • 필수 필드(이름, 설명, 가격) 모두 입력했는지 확인하세요.
  • 최소한 한 개의 지역화 설정을 추가했는지 확인하세요.
  • 은행/세금 정보가 승인되었는지 확인하세요.
  • 첫 번째 구독(앱 버전이 필요함)이 있는지 확인하세요.

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

  • 이미 활성화되어 비활성화할 수 없습니다:
  • 구독 세부 사항에서 확인:
  • 어떤 문제가 발생해도 애플 지원팀에 문의하세요:

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

  • 일부 지역에서 제한될 수 있습니다:
  • 대안 계층을 선택:
  • 가격에 대한 문의는 애플에 문의하세요:

“Invalid Product ID” error:

  • 올바른 Product ID 형식이 아닙니다:
  • 역 도메인 형식이어야 합니다:
  • 공백이나 특수 문자를 포함할 수 없습니다:
  • 모든 제품에서 고유성을 확인하세요

__CAPGO_KEEP_0__

추가 리소스

자세한 내용은 자동 갱신 가능 구독에 대한 공식 애플 문서를 참조하십시오..

Create iOS Auto-Renewable Subscription에서 계속

Create iOS Auto-Renewable Subscription에서 계속

Create iOS Auto-Renewable Subscription을 사용 중이라면 Create iOS Auto-Renewable Subscription을 스토어 승인 및 배포 계획을 위해 Create iOS Auto-Renewable Subscription을 Using @capgo/native-purchases Using @capgo/native-purchases의 Using @capgo/capacitor-in-app-review Using @capgo/capacitor-in-app-review의 구현 세부 사항 Using @capgo/capacitor-in-app-review for the native capability in Using @capgo/capacitor-in-app-review, @capgo/capacitor-native-market for the implementation detail in @capgo/capacitor-native-market, and Using @capgo/capacitor-native-market for the native capability in Using @capgo/capacitor-native-market.