iOS 구독 그룹 만들기
설치
iOS 앱에서 여러 구독 수준을 관리하고 조직하기 위해 구독 그룹이 필수적입니다. 구독 그룹이 어떻게 작동하는지 이해하는 것은 업그레이드, 다운그레이드 및 크로스 그레이드 기능을 implement하는 데 중요합니다.
구독 그룹이란 무엇인가요?
구독 그룹이란 무엇인가요?구독 그룹은 사용자가 선택할 수 있는 관련된 구독의 집합입니다. 사용자는 한 그룹 내에서 한 번에 하나의 구독만 구독할 수 있습니다. 구독을 SWITCH할 때 Apple은 자동으로 전환을 처리합니다.
구독 그룹이 왜 중요한가요?
구독 그룹이란 무엇인가요?구독 그룹은 다음과 같은 기능을 제공합니다:
- 가격 계층 구조: 기본, 프리미엄 및 최상위 계획을 제공합니다.
- 다양한 기간: 월, 년, 영구 옵션
- 업그레이드/다운그레이드 로직: 구독 변경을 자동으로 처리
- 간소화된 관리: 관련 구독을 그룹화
구독 등급
구독 등급그룹 내에서 각 구독은 가장 높은 가치 (등급 1) 에서 가장 낮은 가치 (등급 n) 로 등급付け되어야 합니다. 이 등급付け은 구독 변경을 분류하는 데 사용됩니다.

등급 예시
등급 1__CAPGO_KEEP_0__ 최고 등급
- 프리미엄 연간 ($99.99/년)
- 최종 월간 ($19.99/월)
레벨 2 중간 등급
- 표준 연간 ($49.99/년)
- 프리미엄 월간 ($9.99/월)
레벨 3 최저 등급
- 기본 연간 ($29.99/년)
- 표준 월간 ($4.99/월)
구독 변경 유형
구독 변경 유형애플은 구독 등급에 따라 자동으로 세 가지 유형의 구독 변경을 처리합니다.
1. 업그레이드
구독 등급 1 → 2로 업그레이드행동: 즉시 적용 사용자는 부분 환불을 받습니다.
__CAPGO_KEEP_0__
- __CAPGO_KEEP_1__ __CAPGO_KEEP_2__
- __CAPGO_KEEP_3__ __CAPGO_KEEP_4__ 남은 시간
- 새로운 구독은 즉시 시작됩니다.
예시:
// User currently has: Standard Monthly (Level 2)// User upgrades to: Premium Annual (Level 1)// Result: Immediate access to Premium, refund for unused Standard time2. 다운그레이드
제목 "2. 다운그레이드"하위 등급의 구독으로 이동 (예: 등급 1 → 등급 2). 동작:
다음 갱신일부터
- 효과가 시작됩니다. __CAPGO_KEEP_0__
- 현재 구독이 유지되며 기간이 끝날 때까지
- 만료 후 자동으로 새로운 구독이 시작됩니다.
예시:
// User currently has: Premium Annual (Level 1)// User downgrades to: Standard Monthly (Level 2)// Result: Premium access continues until annual renewal date, then switches3. Crossgrade
같은 티어 레벨의 다른 구독으로 전환동일한 티어 레벨의 다른 구독으로 전환 기간에 따라 행동이 달라집니다:.
다른 기간
→ 하향 조정과 같이 행동 하향 조정 다른 기간
- 다음 갱신 날짜부터 적용됩니다.
- 예시: 월간 프리미엄 (레벨 1) → 연간 프리미엄 (레벨 1)
같은 기간 → 업그레이드
- 즉시 적용됩니다.
- 예시: 프리미엄 월간 (레벨 1) → 얼티밋 월간 (레벨 1)
구독 그룹 만들기
구독 그룹 만들기-
구독으로 이동
애플 스토어 연결에서 앱을 선택하고 수익화 > 구독.
-
그룹 만들기
클릭 + “구독 그룹” 옆의 다음 버튼을 클릭하여 새로운 그룹을 만들 수 있습니다.
-
그룹 이름
이 그룹에 포함된 구독을 반영하는 설명적인 이름을 선택하세요.
- “프리미엄 접근권”
- “클라우드 스토리지 플랜”
- “프로 기능”
-
구독 추가
그룹을 만들고 나서, 개별 구독을 추가하세요. 각 구독은 등급 랭킹을 가집니다.
-
등급 랭킹 설정
가장 높은 가치 (1)부터 가장 낮은 가치까지 구독을 배열하세요. 고려할 점은:
- 연간 계획은 일반적으로 월간 계획보다 등급이 높습니다.
- 가격이 높은 계층은 가격이 낮은 계층보다 위에 있습니다.
- 최종/프리미엄 계층은 가장 높은 등급입니다.
앱에 사용하는 방법
앱에 사용하는 방법네이티브-구매 플러그인은 구독 그룹 논리를 자동으로 처리합니다.
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch all subscriptions in a groupconst { products } = await NativePurchases.getProducts({ productIdentifiers: ['premium_monthly', 'premium_annual', 'ultimate_monthly'], productType: PURCHASE_TYPE.SUBS,});
// Display current subscription using StoreKit transactionsconst { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS,});
const activeSubs = purchases.filter((purchase) => purchase.isActive);
// Detect pending downgrade/cancellation (StoreKit sets willCancel === true)const pendingChange = purchases.find((purchase) => purchase.willCancel === true);if (pendingChange) { console.log('Subscription will stop auto-renewing on', pendingChange.expirationDate);}
// Purchase (StoreKit handles upgrades/downgrades automatically)await NativePurchases.purchaseProduct({ productIdentifier: 'premium_annual', productType: PURCHASE_TYPE.SUBS,});
// Listen for StoreKit updates (fires on upgrades/downgrades/refunds)NativePurchases.addListener('transactionUpdated', (transaction) => { console.log('Subscription updated:', transaction);});구독 변경을 처리하는 방법
구독 변경을 처리하는 방법변경 유형을 감지하는 방법
변경 유형을 감지하는 방법import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Get current subscription infoconst { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS,});
const currentSubscription = purchases.find( (purchase) => purchase.subscriptionState === 'subscribed',);
if (currentSubscription) { // StoreKit reports if user cancelled auto-renew if (currentSubscription.willCancel) { console.log( `User cancelled. Access remains until ${currentSubscription.expirationDate}`, ); }
if (currentSubscription.isUpgraded) { console.log('User recently upgraded to this plan.'); }}
// Listen for automatic upgrades/downgradesNativePurchases.addListener('transactionUpdated', (transaction) => { console.log('Subscription changed!', transaction); if (transaction.subscriptionState === 'revoked') { revokeAccess(); } else if (transaction.isActive) { unlockPremiumFeatures(); }});사용자 커뮤니케이션
사용자 커뮤니케이션 섹션변경 동작을 항상 명확하게 전달하세요:
업그레이드 경우:
“프리미엄 기능에 즉시 접근하실 수 있습니다. 현재 구독을 프로레이트합니다.”
다운그레이드 경우:
“프리미엄 접근권한을 [갱신일]까지 유지하고, 그 후 표준으로 전환됩니다.”
크로스그레이드 경우:
“다음 갱신일인 [날짜]부터 연간 결제로 변경됩니다.”
서버 모니터링
섹션 제목: 서버 모니터링애플의 App Store Server Notifications v2 또는 자체 수신증명 백엔드와 함께 StoreKit 변경 사항을 데이터베이스에 반영하세요. 서버通知를 데이터베이스에 반영하세요. transactionUpdated __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__
- 가격 대신 가치 고려하십시오
사용자 경험
사용자 경험 섹션- 현재 구독을 명확하게 표시하십시오
- 그룹 내 모든 옵션을 표시하십시오
- 즉시 적용 vs. 갱신 시 변경을 나타내십시오
- 플랜 간 쉽게switching을 허용하십시오
테스트
테스트 섹션- 업그레이드 모든 시나리오를 테스트하십시오
- 다운그레이드 모든 시나리오를 테스트하십시오
- 크로스 그레이드 동작을 확인하십시오
- 체크 웹 훅 발동
일반적인 상황
일반적인 상황1단계: 3계층 월간 계획
1단계: 3계층 월간 계획Level 1: Ultimate Monthly ($19.99)Level 2: Premium Monthly ($9.99)Level 3: Basic Monthly ($4.99)- 기본 → 프리미엄: 즉시 업그레이드
- 프리미엄 → 최고급: 즉시 업그레이드
- 최고급 → 프리미엄: 갱신 시 다운그레이드
- 기본 → 최고급: 즉시 업그레이드
2단계: 혼합 기간 계획
2단계: 혼합 기간 계획Level 1: Premium Annual ($99.99/year)Level 2: Premium Monthly ($9.99/month)- 월 → 연: 재고등록 (재정기)
- 연 → 월: 하향조정 (재정기)
시나리오 3: 다중 계층 다중 기간
시나리오 3: 다중 계층 다중 기간Level 1: Ultimate Annual ($199/year)Level 2: Ultimate Monthly ($19.99/month)Level 3: Premium Annual ($99/year)Level 4: Premium Monthly ($9.99/month)Level 5: Basic Annual ($49/year)Level 6: Basic Monthly ($4.99/month)이 설정은 최대 유연성을 제공하면서 명확한 업그레이드/다운그레이드 논리를 유지합니다.
문제 해결
문제 해결구독이 그룹에 나타나지 않습니다:
- 그룹에 할당되어 있는지 확인하세요
- 적어도 '제출 준비' 상태인지 확인하세요
- 제품 ID가 정확한지 확인하세요.
업그레이드/다운그레이드 동작이 잘못된 경우:
- 등급 순위 검토 (1 = 가장 높은 등급)
- 구독 등급이 합리적인지 확인하세요.
- 등급이 올바르게 설정되어 있는지 확인하세요.
다른 그룹의 제품:
- 사용자는 동시에 여러 그룹에 구독할 수 있습니다.
- 이것은 의도된 동작입니다. - 관련 제품은 동일한 그룹에 유지하세요.
getActiveProducts에서 여러 구독이 표시되는 경우:
- 구독이 다른 그룹에 있는지 확인하세요.
- 사용자가 가족 공유를 통해 구독하고 있는지 확인하세요.
- 애플 스토어 커넥트에서 구독 상태를 검토하세요.
추가 리소스
추가 리소스 섹션자세한 내용은 애플 공식 문서의 구독 그룹에 대한 설명을 참조하십시오.
Create iOS Subscription Group에서 계속 진행하세요
Create iOS Subscription Group에서 계속 진행하세요 섹션Create iOS Subscription Group을 사용하는 경우 Create iOS Subscription Group을 사용하여 스토어 승인 및 배포 계획을 위해 Create iOS Subscription Group을 사용하는 경우 Using @capgo/native-purchases Using @capgo/native-purchases의 네이티브 기능을 위해 @capgo/native-purchases를 사용합니다. Using @capgo/native-purchases의 @capacitor-in-app-review 구현 세부 정보는 @capgo/capacitor-in-app-review에서 찾을 수 있습니다. Capacitor @capgo/capacitor-in-app-review을 사용합니다. Capacitor @capgo/capacitor-in-app-review의 원시 기능을 사용합니다. Capacitor @capgo/capacitor-native-market 구현 세부 정보는 @capgo/capacitor-native-market, 그리고 Capacitor @capgo/capacitor-native-market을 사용합니다. Capacitor @capgo/capacitor-native-market의 원시 기능을 사용합니다.