본문 바로가기

Android 자동 갱신 구독 생성

GitHub

자동 갱신 구독은 앱 내 콘텐츠, 서비스 또는 프리미엄 기능에 지속적으로 액세스할 수 있는 권한을 제공합니다. 이 가이드는 Google Play Console에서 구독을 생성하고 설정하는 방법을 안내합니다.

구독은 사용자가 취소하기 전까지 매 결제 주기 종료 시 자동으로 갱신됩니다. 다음과 같은 서비스에 적합합니다:

  • 프리미엄 콘텐츠 액세스
  • 광고 없는 환경
  • 클라우드 스토리지
  • 지속적인 서비스 제공
  1. Subscriptions 메뉴로 이동합니다.

    Google Play Console에서 앱을 선택한 후, 수익화 > 구독 왼쪽 메뉴에서

    Members 섹션에서 구독 생성하기 버튼을 클릭하여 시작합니다.

    subscriptions 메뉴로 이동합니다.

  2. 기본 정보 입력

    구독 이름과 제품 ID를 입력합니다. 제품 ID는 앱 설정에 필수이며 나중에 변경할 수 없습니다.

    구독 상세 정보 입력

  3. 기본 요금제 생성

    Google Play는 구독당 정확히 하나의 기본 요금제를 요구합니다. native-purchases 플러그인은 iOS와의 호환성을 유지하기 위해 하나의 기본 요금제만 지원합니다.

    클릭 기본 요금제 추가 하려면 계속 진행하세요.

    기본 요금제 생성

  4. 기본 요금제 상세 설정

    입력:

    • 기본 요금제 ID: 이 요금제의 고유 식별자
    • 결제 주기: 사용자 결제 주기 (주간, 월간, 연간 등)
    • 유예 기간: 구독 취소 전 결제를 재시도하는 동안 Google이 구독 상태를 유지하는 기간

    기본 요금제 설정

  5. 가격 설정

    가격 섹션으로 이동하여 구독을 제공할 모든 국가/지역을 선택하세요.

    지역 선택

  6. 가격 설정

    기본 통화로 기본 가격을 설정하세요. Google Play가 이를 현지 통화로 자동 변환합니다.

    가격 설정

  7. 지역별 가격 검토

    국가별로 자동 변환된 가격을 검토하세요. 필요한 경우 개별 가격을 조정할 수 있습니다.

    가격 검토

  8. 설정 저장

    가격 설정을 저장합니다.

    가격 저장

  9. 구독 활성화

    Members 섹션에서 활성화 구독 상품을 출시하고 구매 가능 상태로 만드는 버튼입니다.

    구독 활성화

주요 고려 사항

“주의 사항” 섹션

기본 요금제 제한

“Base Plan Limitation” 섹션

iOS 구독 처리 방식과의 일관성을 유지하기 위해, native-purchases 플러그인은 구독당 정확히 하나의 base plan만 필요로 합니다. 여러 개의 base plan은 지원되지 않습니다.

Grace period를 사용하면 Google Play가 사용자의 구독 권한을 유지하면서 결제 실패 시 재시도를 할 수 있습니다. 일반적인 grace period는 다음과 같습니다:

  • 월간 구독의 경우 3일
  • 장기 구독의 경우 7일

생성 후 구독은 활성화될 때까지 “Draft” 상태로 유지됩니다. sandbox 모드에서 draft 구독을 테스트할 수 있습니다.

생성 후에는 product ID를 사용해 앱에서 구독을 참조하세요:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Load subscription info
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['com.example.premium.monthly'],
productType: PURCHASE_TYPE.SUBS,
});
const product = products[0];
console.log(`${product.title} — ${product.priceString}`);
// Purchase (planIdentifier = Base Plan ID from Google Play Console)
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.example.premium.monthly',
planIdentifier: 'monthly-plan', // REQUIRED on Android, ignored on iOS
productType: PURCHASE_TYPE.SUBS,
});
console.log('Transaction ID', transaction.transactionId);
// Later, check purchase state
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const subscription = purchases.find(
(purchase) => purchase.productIdentifier === 'com.example.premium.monthly',
);
if (subscription && subscription.purchaseState === 'PURCHASED' && subscription.isAcknowledged) {
console.log('Subscription active locally');
// For expiration/cancellation, validate purchaseToken through your backend
}

앱에 구독 항목이 나타나지 않는 경우:

  • Product ID가 정확히 일치하는지 확인하세요
  • 구독이 활성화되었는지 확인하세요
  • 앱의 package name이 올바른지 확인하세요
  • 변경 사항이 반영될 때까지 활성화 후 2~3시간 기다리세요

Base plan 오류:

  • Base plan이 정확히 하나인지 확인하세요
  • 모든 필수 필드가 입력되었는지 확인하세요
  • 결제 주기(billing period)가 유효한지 확인하세요

가격 설정 오류:

  • 최소 하나 이상의 국가가 선택되었는지 확인하세요
  • Base price가 최소 허용 금액보다 큰지 확인하세요
  • 통화 환율이 적절한지 확인하세요

Android 자동 갱신 구독 생성 단계 계속하기

“Android 자동 갱신 구독 생성” 단계 이후 과정

사용 중이라면 Android 자동 갱신 구독 생성 스토어 승인 및 배포를 계획하려면, 다음 항목과 연결하세요 @capgo/native-purchases 사용하기 @capgo/native-purchases 사용 시 네이티브 기능을 위해, @capgo/capacitor-in-app-review @capgo/capacitor-in-app-review의 구현 세부 사항에 대해서는, @capgo/capacitor-in-app-review 사용하기 @capgo/capacitor-in-app-review 사용하기에서 네이티브 기능은, @capgo/capacitor-native-market @capgo/capacitor-native-market의 구현 세부 사항에 대해서는, 그리고 @capgo/capacitor-native-market 사용하기 @capgo/capacitor-native-market. 사용하기에서 네이티브 기능은