# RevenueCat iOS 인앱 구독 설정 방법

> RevenueCat은 App Store Connect 상품을 앱에 연결하고 접근 권한을 관리해 줘요. 첫 iOS 인앱 구독을 연결하는 단계를 정리했어요.

원본 페이지: [RevenueCat iOS 인앱 구독 설정 방법](https://devoria.fr/ko/blog/revenuecat-ios-in-app-subscription-setup)
작성자: [Mehdi Azizi](https://devoria.fr/ko/mehdi-azizi)
게시일: 2026-10-01
최종 내용 수정: 2026-10-09


## StoreKit만 쓰지 않고 RevenueCat을 쓰는 이유

Apple의 프레임워크인 StoreKit만으로도 외부 서비스 없이 구독을 판매할 수 있어요. 하지만 초보자가 구매, 복원, 접근 권한 확인 로직을 전부 직접 작성하면 유지보수할 코드가 많아지고, 놓치기 쉬운 예외 상황도 생겨요. 기기 변경, 만료, 환불 같은 경우요.

[RevenueCat](https://www.revenuecat.com/docs/welcome/overview)은 App Store Connect와 앱 사이에 들어가서 상품을 읽어 오고, 활성 구독을 관리해 줘요. 덕분에 이 계층을 직접 만들 필요가 없어요. 가격과 오퍼는 대시보드에서 직접 관리할 수 있고, 바꿀 때마다 앱을 다시 배포하지 않아도 돼요.

## 1단계: App Store Connect에서 상품 만들기

RevenueCat보다 먼저 Apple 쪽에 상품이 있어야 해요. App Store Connect에서 구독 그룹을 만들고, 그 안에 월간이나 연간처럼 기간을 정한 등급을 하나 이상 만든 다음 지역별 가격을 설정하세요. 각 등급마다 사용자에게 보여 줄 텍스트도 입력해야 해요. Apple은 상품을 심사에서 승인하기 전에 이 텍스트를 요구해요.

이 단계에서 자주 하는 실수가 있어요. 상품은 만들었는데, 연결된 버전과 함께 앱의 첫 심사에 한 번도 제출하지 않은 경우예요. 앱 제출에 한 번도 포함되지 않은 대기 중인 상품은 RevenueCat에서는 이미 보이더라도 사용자에게는 보이지 않아요.

## 2단계: RevenueCat을 앱에 연결하기

RevenueCat에서 프로젝트를 만들고, App Store Connect API 키를 연결해서 RevenueCat이 상품을 자동으로 동기화하게 해요. 그다음 접근 권한인 "entitlement"를 정의해요. entitlement는 구독이 열어 주는 것, 예를 들어 앱 전체 접근을 나타내요. 어떤 상품으로 구매했는지와는 상관없어요.

이렇게 한 단계 거치는 구조가 꽤 유용해요. 나중에 연간 등급을 추가하는 식으로 오퍼 구조를 바꾸더라도, 새 상품을 같은 entitlement에 연결하기만 하면 돼요. 앱에서 접근을 확인하는 코드는 건드릴 필요가 없어요.

앱 쪽에서는 [React Native용 RevenueCat SDK](https://www.revenuecat.com/docs/getting-started/installation/reactnative)를 전용 플러그인으로 Expo 프로젝트에 설치해요. 현재 사용자가 활성 entitlement를 가지고 있는지 확인하는 간단한 함수도 제공해요.

## 3단계: 페이월 만들기

페이월은 오퍼를 보여 주는 화면이고, 여기서 구매가 시작돼요. RevenueCat은 대시보드에서 설정하는 페이월을 제공해서 앱을 다시 배포하지 않고도 수정할 수 있어요. 디자인을 완전히 직접 통제하고 싶다면 SDK로 직접 만들어도 돼요.

배치는 디자인만큼 중요해요. 앱의 가치를 보기도 전에 뜨는 페이월은 보통 첫 동작을 성공한 직후에 보여 주는 페이월보다 전환율이 낮아요. [초보자가 하는 iOS 페이월 실수](https://devoria.fr/ko/blog/ios-paywall-mistakes-beginners) 가이드에서 기술적인 연결 외에 이 단계에서 자주 빠지는 함정을 자세히 다뤄요.

## 4단계: 구매, 복원, 만료 테스트하기

가장 대충 넘어가기 쉬운 단계인데, Apple이 가장 꼼꼼히 확인하는 단계이기도 해요. 제출 전에 세 가지 시나리오가 제대로 작동해야 해요.

**구매.** 샌드박스 테스터 계정으로 구매하면 entitlement가 즉시 열려야 하고, 앱을 재시작하지 않아도 앱이 이 변화에 반응해야 해요.

**복원.** 새 기기에서 또는 재설치 후에 같은 Apple 계정으로 "구매 복원" 버튼을 누르면 활성 구독을 찾아와야 해요. Apple은 심사에서 이 흐름을 항상 확인해요. 이 버튼이 없거나 제대로 작동하지 않으면 [가이드라인 3.1.1](https://devoria.fr/ko/blog/guideline-3-1-1-in-app-purchase-required) 위반으로 리젝되는 경우가 많아요.

**만료.** 샌드박스 환경에서는 구독이 몇 달이 아니라 몇 분 만에 만료돼요. 그래서 실제 결제 주기를 기다리지 않고도 기간이 끝나면 접근이 제대로 닫히는지 확인할 수 있어요.

## RevenueCat이 대신해 주지 않는 것

RevenueCat은 구매 메커니즘을 관리할 뿐, 앱 페이지나 페이월이 [가이드라인 3.1.2](https://devoria.fr/ko/blog/guideline-3-1-2-subscription-app-rejection)를 지키는지까지 챙겨 주지는 않아요. App Store 설명에 구독 내용을 정확히 쓰고, 정확한 가격과 기간을 적고, 이용 약관을 입력하는 건 여전히 여러분 몫이에요. 이 기술 단계에 들어가기 전에 [iOS 앱, 구독과 일회성 구매 중 무엇을 고를까](https://devoria.fr/ko/blog/ios-app-subscription-vs-one-time-purchase) 페이지에서 알맞은 모델을 고르는 데 도움을 받을 수 있어요.

또 RevenueCat은 월 매출이 일정 기준을 넘으면 수수료를 받아요. 앱 안에서 판매한 구독에 붙는 Apple 수수료와는 별도예요. 이 두 수수료를 기준으로 수익 모델을 짜기 전에 RevenueCat 사이트에서 현재 요금 구간을 확인하세요.

## 초보자가 가장 자주 하는 실수

**로딩 상태를 빼먹는 것.** 앱을 실행하면 RevenueCat이 사용자의 접근 권한을 가져오는 데 잠깐 시간이 걸려요. 응답이 오기 전에 앱이 유료 콘텐츠를 기본으로 보여 주면, 구독하지 않은 사용자가 잠깐이나마 결제하지 않은 콘텐츠를 볼 수 있어요. 낙관적으로 기본 화면을 띄우지 말고 명확한 로딩 상태를 만들어 두세요.

**엉뚱한 곳에서 권한을 확인하는 것.** 활성 entitlement는 시작할 때 한 번만 확인하면 안 되고, 유료 화면을 열 때마다 다시 확인해야 해요. 사용자가 앱을 쓰는 동안 구독을 취소하거나 구독이 만료되면, 다음 화면에 그 변화가 반영돼야 해요.

**샌드박스와 프로덕션 환경을 헷갈리는 것.** 샌드박스의 상품 식별자와 테스터 계정은 프로덕션과 별개예요. 잘못된 Apple 계정으로 샌드박스에서 성공한 테스트나, 프로덕션에만 만든 상품 때문에 모든 준비가 끝났다고 착각할 수 있어요.

## 빌드만 되는 앱이 아니라 검증된 앱

내 계정으로 빠르게 테스트했을 때 "작동하는" 구독이라고 해서 다른 기기에서의 복원이나 실제 만료까지 버틴다는 보장은 없어요. Apple 심사관이 확인하는 게 바로 이 부분이에요. [iOS 인앱 구독](https://devoria.fr/ko/expertise/ios-in-app-subscription) 페이지에서 상품 생성부터 최종 확인까지 전체 과정을 자세히 다뤄요.

페이월과 구독이 이미 코드에 들어 있는 상태에서 시작하고 싶다면 [iOS Kit](https://devoria.fr/ko/kits/ios)의 시작 코드에 그게 들어 있어요. 심사관처럼 구독을 점검하고 싶다면 [Apple Review Kit](https://devoria.fr/ko/kits/review-apple)에 제출 전 체크리스트와 인앱 구매에 관해 테스터에게 남길 메모를 담아 두었어요.

## 자주 묻는 질문

### iOS에서 RevenueCat 구독은 어떻게 설정하나요?

네 단계로 해요. 먼저 App Store Connect에서 상품을 만들어요. 다음으로 App Store Connect API 키로 RevenueCat을 연결하고 entitlement(접근 권한)를 정의한 뒤 페이월을 만들어요. 마지막으로 구매, 복원, 만료를 테스트해요. 대충 넘어가기 쉽지만 Apple이 확인하는 단계예요.

### iOS에서 구독을 팔려면 RevenueCat이 꼭 필요한가요?

아니요. Apple의 프레임워크인 StoreKit만으로도 외부 서비스 없이 구독을 판매할 수 있어요. 다만 그러면 구매, 복원, 접근 권한 확인 로직을 전부 직접 작성해야 하고, 기기 변경, 만료, 환불처럼 놓치기 쉬운 예외 상황도 챙겨야 해요. RevenueCat은 App Store Connect와 앱 사이에 들어가서 이 계층을 대신해 줘요.

### RevenueCat의 entitlement란 무엇인가요?

entitlement는 접근 권한이에요. 구독이 열어 주는 것, 예를 들어 앱 전체 접근을 나타내고, 어떤 상품으로 구매했는지와는 상관없어요. 나중에 연간 등급을 추가하면 새 상품을 같은 entitlement에 연결하기만 하면 돼요. 앱에서 접근을 확인하는 코드는 바꿀 필요가 없어요.

### Apple에 제출하기 전에 RevenueCat 구독은 어떻게 테스트하나요?

제출 전에 세 가지 시나리오가 작동해야 해요. 구매: 샌드박스 테스터 계정으로 앱을 재시작하지 않아도 접근이 즉시 열려야 해요. 복원: 새 기기에서 또는 재설치 후에 같은 Apple 계정으로 복원 버튼을 누르면 활성 구독을 찾아와야 해요. 만료: 샌드박스에서는 구독이 몇 분 만에 만료되니, 접근이 제대로 닫히는지 확인할 수 있어요.

### RevenueCat에는 보이는 상품이 왜 사용자에게는 안 보이나요?

대개 그 상품이 앱 제출에 한 번도 포함되지 않았기 때문이에요. App Store Connect에서 만들었지만 연결된 버전과 함께 첫 심사에 제출하지 않은 상품은 RevenueCat에서는 이미 보여도 사용자에게는 보이지 않아요. 상품을 만드는 단계에서 자주 하는 실수예요.

### RevenueCat은 구독 수수료를 받나요?

RevenueCat은 월 매출이 일정 기준을 넘으면 수수료를 받아요. 이 수수료는 앱 안에서 판매한 구독에 붙는 Apple 수수료와 별도로 붙어요. 이 두 수수료를 기준으로 수익 모델을 짜기 전에 RevenueCat 사이트에서 현재 요금 구간을 확인하세요.


## 내 프로젝트

[iOS Kit](https://devoria.fr/ko/kits/ios): Claude Code로 iPhone 앱을 만드세요. 제 앱들의 Starter Code, 작업을 검사하는 skill, Apple Review Kit, App Store Screenshots Kit, ASO Kit 포함. 129,99 €.
