내용으로 건너뛰기

iOS 자동 갱신 구독 만들기

GitHub

자동 갱신 구독은 iOS 앱에서 반복적으로 콘텐츠, 서비스 또는 프리미엄 기능에 접근할 수 있도록 해줍니다. 이 안내서에서는 App Store Connect에서 구독을 만드는 방법을 안내해 드립니다.

개요

개요

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

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

Section titled “Prerequisites”

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

구독 만들기

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

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

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

    구독으로 이동

  2. 새로운 구독 만들기

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

  3. 기본 정보 입력

    참조 이름: 내부적으로 고객에게 표시되지 않는 구독의 설명 이름입니다.

    • 예시: “Premium Monthly”, “Ultimate Annual”, “Basic Plan”

    상품 ID: 이 구독에 대한 고유 식별자입니다. 나중에 변경할 수 없습니다.

    • 형식: com.yourcompany.yourapp.premium_monthly
    • 구독의 설명 이름을 사용하여 소문자와 언더스코어를 사용하세요.
    • native-purchases 플러그인을 구성하기 위해 필수입니다.

    구독 세부 정보 입력

  4. 구독 기간 설정

    구독 기간을 다음과 같은 옵션 중에서 선택하세요:

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

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

  5. 가격 설정

    클릭 구독 가격 추가 가격 설정을 위해 구성하십시오:

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

    가격: 구독 가격을 설정하십시오

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

    가격 설정

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

    가족 구성원 6명까지 구독에 접근할 수 있도록 Family Sharing을 활성화할지 결정하십시오

    활성화할 경우:

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

    활성화하지 마세요:

    • 개인 사용자만을 위한 구독입니다.
    • 콘텐츠는 사용자에게 맞춰져 있습니다.
    • 사용자당 최고의 수익을 원합니다.
  7. 지역화 추가

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

    구독 표시 이름: 고객 직면 이름 (예: "월간 프리미엄")

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

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

    지역화 추가

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

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

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

    클릭 저장 구독을 생성하세요.

    첫 번째 구독:

    • 새로운 앱 버전과 함께 제출해야 합니다.
    • 다음 App Store 제출에 포함하세요
    • 독립적으로 제출할 수 없습니다.

    다음 구독에 대해:

    • 구독 페이지에서 직접 제출할 수 있습니다
    • 새로운 앱 버전이 필요하지 않습니다
    • 첫 번째 구독이 승인되면 사용할 수 있습니다

구독 상태

구독 상태

구독 상태는 다음과 같습니다.

상태설명테스트할 수 있나요?
미설정된 메타데이터설정 미완료Yes (sandbox)
제출 준비 중제출 완료하지 않음Yes (sandbox)
검토 대기 중애플에 제출함Yes (sandbox)
검토 중애플에서 검토 중Yes (sandbox)
승인됨사용 가능함Yes
거절변경이 필요합니다Yes (sandbox)

앱에서 사용하는 방법

앱에서 사용하는 방법

생성된 구독을 앱에서 사용하기 위해 제품 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 월간 계약 청구 플랜.

최선의 방법

월간 플랜
  • 년간 플랜년간 플랜
  • 년간 플랜더 높은 LTV, 낮은 churn, 더 좋은 가치
  • 다양한 등급기본, 프리미엄, 최고급 등급을 사용자 세그먼트에 따라 다르게 제공
  • 경쟁 분석유사한 앱의 가격을 연구

상품 ID

상품 ID
  • 일관된 이름 사용: company.app.tier_duration
  • 등급과 기간을 포함한 ID: premium_monthly, ultimate_annual
  • 상품 ID를 변경하지 않도록( permanant )
  • 팀원에게 모든 상품 ID를 문서화
  • 가족 중심 앱에 대한 지원 (게임, 교육, 엔터테인먼트)
  • 수익에 미치는 영향 고려
  • 공유 동작을 철저히 테스트
  • 마케팅에서 공유 가능성을 설명
  • 모든 구독 이름과 설명 번역
  • 지역 가격 차이 고려
  • 모든 지원 언어에서 표시 테스트
  • 문화적으로 적합한 마케팅 언어 사용

홍보 이미지

홍보 이미지 섹션
  • 일관된 시각적 스타일 유지
  • 구독 이름과 주요 이점 포함
  • 계절促销을 위한 업데이트
  • 앱의 전체 디자인 언어와 일치

일반 구독 패턴

일반 구독 패턴 섹션

단일 티어 (프리미엄)

단일 티어 (프리미엄) 섹션
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

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__
- Credit packs (consumable)
- Monthly subscription (unlimited credits)
- Annual subscription (unlimited + bonus features)

__CAPGO_KEEP_3__

__CAPGO_KEEP_4__

__CAPGO_KEEP_5__

  • __CAPGO_KEEP_6__
  • __CAPGO_KEEP_7__
  • __CAPGO_KEEP_8__
  • __CAPGO_KEEP_9__

__CAPGO_KEEP_10__

  • 필수 필드 모두 입력 (이름, 설명, 가격)
  • 적어도 한 번의 지역화 추가
  • 은행/세금 정보 승인 여부 확인
  • 첫 번째 구독 확인 (앱 버전 필요)

가족 공유 설정 비활성화:

  • 이미 활성화 (비활성화 불가)
  • 구독 세부 사항에서 확인
  • 어떤 문제가 발생하면 애플 지원에 문의

가격 계층이 사용할 수 없음:

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

“유효하지 않은 제품 ID” 오류:

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

추가 리소스

추가 리소스

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

Create iOS Auto-Renewable Subscription에서 계속하세요

Create iOS Auto-Renewable Subscription을 사용 중이라면

Create iOS Auto-Renewable Subscription을 사용하여 스토어 승인 및 배포를 계획하고, Create iOS Auto-Renewable Subscription을 연결하세요 __CAPGO_KEEP_0__ @capgo/native-구매 for the native capability in @capgo/native-구매, @capgo/capacitor-앱리뷰 for the implementation detail in @capgo/capacitor-앱리뷰, Using @capgo/capacitor-앱리뷰 for the native capability in Using @capgo/capacitor-앱리뷰, @capgo/capacitor-네이티브마켓 for the implementation detail in @capgo/capacitor-네이티브마켓, and Using @capgo/capacitor-네이티브마켓 for the native capability in Using @capgo/capacitor-네이티브마켓.