React Native에서 **react-native-iap(인앱 결제, IAP)**을 구현하면 에뮬레이터에서는 정상 동작하지만, 실제 기기에서는 구독 상품이 표시되지 않는 문제를 겪을 수 있습니다.
이 글에서는 IAP가 실제 기기에서 정상적으로 동작하지 않는 이유와 해결 방법을 정리하겠습니다.
🔹 문제 상황
✅ 에뮬레이터에서는 getSubscriptions()이 정상적으로 구독 상품을 불러옴.
✅ 하지만 실제 기기에서는 getSubscriptions()이 빈 배열([])을 반환하거나, 결제 요청이 실패함.
✅ 릴리즈 빌드를 하더라도 구독 상품이 표시되지 않음.
✅ Google Play 내부 테스트 트랙에서는 동작하지 않음.
🔹 해결 방법 (가장 중요한 핵심 해결책)
✅ 🔑 내부 테스트 트랙이 아닌 "비공개 테스트 트랙"에 업로드 후 Google Play 검토를 완료해야 실제 기기에서 IAP가 정상 동작함!
📌 해결 방법 요약
1️⃣ 내부 테스트(Internal Testing) 트랙이 아니라 "비공개 테스트(Closed Testing) 트랙"에 업로드
2️⃣ Google Play에서 앱 검토를 통과해야 실제 기기에서 IAP가 활성화됨
3️⃣ 에뮬레이터에서는 Android Studio에서 직접 빌드한 APK로 테스트 가능
✅ 즉, 내부 테스트 트랙에서는 결제 API가 제대로 동작하지 않고, 비공개 테스트 트랙에서 검토를 거쳐야 실제 기기에서 정상적으로 IAP가 활성화됨!
🔹 IAP 문제를 해결하기 위해 시도한 과정
✅ 1. Google Play 테스트 계정 등록
📌 Google Play에서 테스트하려면 "라이선스 테스트 계정"을 등록해야 함.
📌 테스트 계정이 설정되지 않으면 실제 기기에서는 IAP가 정상 동작하지 않음.
🔹 해결 방법:
- Google Play Console → 설정 → 개발자 계정 → 계정 세부정보
- "라이선스 테스트(Gmail accounts with testing access)"에 테스트 계정 추가
- 테스트 기기에서 Google Play Store를 해당 계정으로 로그인
✅ 결과: 라이선스 테스트 계정을 추가하지 않으면 실제 기기에서 getSubscriptions()이 빈 배열을 반환할 수 있음 → 등록 후 해결.
✅ 2. 내부 테스트(Internal Testing) 트랙은 IAP가 동작하지 않음!
📌 처음에는 "내부 테스트 트랙"에 앱을 올리고 테스트했으나, IAP가 정상적으로 동작하지 않았음.
📌 내부 테스트 트랙에서는 결제 API가 제한될 가능성이 있음.
🔹 해결 방법:
- "내부 테스트"가 아닌 "비공개 테스트(Closed Testing) 트랙"에 앱 업로드
- Google Play 검토가 완료되면, 실제 기기에서 정상적으로 구독 상품이 표시됨
✅ 결과: 내부 테스트 트랙에서는 구독 상품이 보이지 않았으나, 비공개 테스트 트랙에서는 정상 작동함!
✅ 3. SKU (Product ID) 불일치 문제 해결
📌 Google Play Console에 등록된 SKU(Product ID)와 코드에서 사용하는 SKU가 다르면 getSubscriptions()이 빈 배열을 반환함.
🔹 해결 방법:
- Google Play Console에서 등록한 SKU(Product ID) 확인
- 코드에서 SKU가 정확히 설정되었는지 확인
✅ 결과: SKU가 잘못 설정된 경우 getSubscriptions()이 빈 배열([])을 반환 → SKU를 정확히 맞춘 후 해결
✅ 4. Google Play Store 캐시 문제 해결
📌 Google Play Store의 결제 API 캐시가 꼬여서 구독 상품을 불러오지 못하는 경우 발생 가능.
🔹 해결 방법:
- 설정 → 앱 → Google Play Store → 저장소 → 캐시 삭제
- Google Play 계정을 로그아웃 후 다시 로그인
- 앱 삭제 후 다시 설치 후 테스트
✅ 결과: Google Play Store 캐시 문제로 인해 getSubscriptions()이 빈 배열을 반환했음 → 캐시 삭제 후 해결
🚀 최종 정리 (실제 해결 시도 방법)
1️⃣ Google Play Console에서 "라이선스 테스트 계정" 추가
2️⃣ "내부 테스트(Internal Testing) 트랙이 아닌 "비공개 테스트(Closed Testing) 트랙"에서 앱 검토 완료
3️⃣ SKU(Product ID)가 정확히 맞는지 코드에서 확인
4️⃣ Google Play Store 캐시 삭제 및 기기 재부팅 후 테스트
6️⃣ 에뮬레이터에서는 Android Studio에서 직접 빌드한 APK로 테스트 가능
🚀 결론
✅ 에뮬레이터에서는 Android Studio에서 직접 빌드한 APK로 테스트 가능
✅ 실제 기기에서는 "비공개 테스트 트랙"에 앱을 업로드한 후 Google Play 검토가 완료되어야 IAP가 정상 작동함!
✅ 즉, "내부 테스트 트랙"에서는 결제 API가 비활성화될 수 있음
🔥 이제 React Native에서 실제 기기에서 IAP(구독)가 동작하지 않는 문제를 완벽하게 해결할 수 있습니다! 🔥
'플러팅 AI > React-native' 카테고리의 다른 글
| 플러팅 AI UI 업데이트 및 광고 점검 (0) | 2025.05.27 |
|---|---|
| 플러팅 AI – 구독 문제 해결 및 UI 개선 작업 기록 (0) | 2025.03.05 |
| 🚨 React Native 0.77.0에서 RNSScreen 관련 Codegen 오류 발생 & 해결 과정 정리 (0) | 2025.01.22 |
| RN 버튼으로 재시작하기 (0) | 2025.01.15 |
| 구매 복원 기능 요약 (0) | 2025.01.14 |