RevenueCat iOS 인앱 구독 설정 방법
글: Mehdi Azizi
업데이트, 7분
RevenueCat은 App Store Connect 상품을 앱에 연결하고 접근 권한을 관리해 줘요. 첫 iOS 인앱 구독을 연결하는 단계를 정리했어요.
StoreKit만 쓰지 않고 RevenueCat을 쓰는 이유
Apple의 프레임워크인 StoreKit만으로도 외부 서비스 없이 구독을 판매할 수 있어요. 하지만 초보자가 구매, 복원, 접근 권한 확인 로직을 전부 직접 작성하면 유지보수할 코드가 많아지고, 놓치기 쉬운 예외 상황도 생겨요. 기기 변경, 만료, 환불 같은 경우요.
RevenueCat은 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를 전용 플러그인으로 Expo 프로젝트에 설치해요. 현재 사용자가 활성 entitlement를 가지고 있는지 확인하는 간단한 함수도 제공해요.
3단계: 페이월 만들기
페이월은 오퍼를 보여 주는 화면이고, 여기서 구매가 시작돼요. RevenueCat은 대시보드에서 설정하는 페이월을 제공해서 앱을 다시 배포하지 않고도 수정할 수 있어요. 디자인을 완전히 직접 통제하고 싶다면 SDK로 직접 만들어도 돼요.
배치는 디자인만큼 중요해요. 앱의 가치를 보기도 전에 뜨는 페이월은 보통 첫 동작을 성공한 직후에 보여 주는 페이월보다 전환율이 낮아요. 초보자가 하는 iOS 페이월 실수 가이드에서 기술적인 연결 외에 이 단계에서 자주 빠지는 함정을 자세히 다뤄요.
4단계: 구매, 복원, 만료 테스트하기
가장 대충 넘어가기 쉬운 단계인데, Apple이 가장 꼼꼼히 확인하는 단계이기도 해요. 제출 전에 세 가지 시나리오가 제대로 작동해야 해요.
구매. 샌드박스 테스터 계정으로 구매하면 entitlement가 즉시 열려야 하고, 앱을 재시작하지 않아도 앱이 이 변화에 반응해야 해요.
복원. 새 기기에서 또는 재설치 후에 같은 Apple 계정으로 "구매 복원" 버튼을 누르면 활성 구독을 찾아와야 해요. Apple은 심사에서 이 흐름을 항상 확인해요. 이 버튼이 없거나 제대로 작동하지 않으면 가이드라인 3.1.1 위반으로 리젝되는 경우가 많아요.
만료. 샌드박스 환경에서는 구독이 몇 달이 아니라 몇 분 만에 만료돼요. 그래서 실제 결제 주기를 기다리지 않고도 기간이 끝나면 접근이 제대로 닫히는지 확인할 수 있어요.
RevenueCat이 대신해 주지 않는 것
RevenueCat은 구매 메커니즘을 관리할 뿐, 앱 페이지나 페이월이 가이드라인 3.1.2를 지키는지까지 챙겨 주지는 않아요. App Store 설명에 구독 내용을 정확히 쓰고, 정확한 가격과 기간을 적고, 이용 약관을 입력하는 건 여전히 여러분 몫이에요. 이 기술 단계에 들어가기 전에 iOS 앱, 구독과 일회성 구매 중 무엇을 고를까 페이지에서 알맞은 모델을 고르는 데 도움을 받을 수 있어요.
또 RevenueCat은 월 매출이 일정 기준을 넘으면 수수료를 받아요. 앱 안에서 판매한 구독에 붙는 Apple 수수료와는 별도예요. 이 두 수수료를 기준으로 수익 모델을 짜기 전에 RevenueCat 사이트에서 현재 요금 구간을 확인하세요.
초보자가 가장 자주 하는 실수
로딩 상태를 빼먹는 것. 앱을 실행하면 RevenueCat이 사용자의 접근 권한을 가져오는 데 잠깐 시간이 걸려요. 응답이 오기 전에 앱이 유료 콘텐츠를 기본으로 보여 주면, 구독하지 않은 사용자가 잠깐이나마 결제하지 않은 콘텐츠를 볼 수 있어요. 낙관적으로 기본 화면을 띄우지 말고 명확한 로딩 상태를 만들어 두세요.
엉뚱한 곳에서 권한을 확인하는 것. 활성 entitlement는 시작할 때 한 번만 확인하면 안 되고, 유료 화면을 열 때마다 다시 확인해야 해요. 사용자가 앱을 쓰는 동안 구독을 취소하거나 구독이 만료되면, 다음 화면에 그 변화가 반영돼야 해요.
샌드박스와 프로덕션 환경을 헷갈리는 것. 샌드박스의 상품 식별자와 테스터 계정은 프로덕션과 별개예요. 잘못된 Apple 계정으로 샌드박스에서 성공한 테스트나, 프로덕션에만 만든 상품 때문에 모든 준비가 끝났다고 착각할 수 있어요.
빌드만 되는 앱이 아니라 검증된 앱
내 계정으로 빠르게 테스트했을 때 "작동하는" 구독이라고 해서 다른 기기에서의 복원이나 실제 만료까지 버틴다는 보장은 없어요. Apple 심사관이 확인하는 게 바로 이 부분이에요. iOS 인앱 구독 페이지에서 상품 생성부터 최종 확인까지 전체 과정을 자세히 다뤄요.
페이월과 구독이 이미 코드에 들어 있는 상태에서 시작하고 싶다면 iOS Kit의 시작 코드에 그게 들어 있어요. 심사관처럼 구독을 점검하고 싶다면 Apple Review Kit에 제출 전 체크리스트와 인앱 구매에 관해 테스터에게 남길 메모를 담아 두었어요.
자주 묻는 질문
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 사이트에서 현재 요금 구간을 확인하세요.