React Native에서 "IAP Initialization error: 'skus' is required" 오류 해결 방법
안녕하세요, 오늘은 React Native를 사용하여 In-App Purchase (IAP) 기능을 구현할 때 발생할 수 있는 "IAP Initialization error: 'skus' is required" 오류에 대해 다뤄보겠습니다. 이 오류는 특히 react-native-iap 라이브러리를 사용하는 과정에서 자주 발생합니다. 해당 오류의 원인과 해결 방법을 자세히 알아보겠습니다.
오류 원인
이 오류는 react-native-iap에서 구독 상품(SKU) 정보를 불러오거나 초기화할 때 발생합니다. 주된 원인은 다음과 같습니다:
- SKU 배열 전달 문제:
- getSubscriptions 또는 requestSubscription 메서드 호출 시 SKU 정보를 배열로 전달해야 하지만, 잘못된 형식으로 전달되었을 때 발생합니다.
- 앱 배포 상태:
- 앱이 Google Play Console이나 App Store Connect의 테스트 트랙에 배포되지 않은 경우, 실제 결제 시스템과 연결할 수 없어 오류가 발생할 수 있습니다.
- 스토어 설정 미비:
- Google Play 또는 App Store에 SKU가 등록되지 않았거나, 잘못된 SKU를 사용한 경우입니다.
해결 방법
1. SKU 배열 형식 확인
react-native-iap는 SKU를 항상 배열로 전달해야 합니다. 단일 SKU를 사용할 경우에도 배열로 감싸야 합니다.
예시 코드:
중요: getSubscriptions와 requestSubscription 모두 배열 형태의 SKU를 요구합니다.
2. 앱을 테스트 트랙에 배포
앱이 Play Store 또는 App Store에서 실제로 결제 테스트를 수행하려면 테스트 트랙에 배포해야 합니다.
- Google Play Console:
- Play Console에서 앱의 내부 테스트 트랙 또는 클로즈드 테스트 트랙에 앱을 배포하세요.
- Play Console의 라이선스 테스트에 테스트 계정을 추가하세요.
- 테스트 계정으로 Play Store에서 앱을 다운로드하여 테스트합니다.
- App Store Connect:
- App Store Connect에서 TestFlight를 통해 앱을 배포하세요.
- TestFlight의 테스트 계정을 사용하여 앱을 설치합니다.
3. SKU 등록 확인
Google Play Console과 App Store Connect에서 SKU가 올바르게 등록되어 있는지 확인하세요.
- Google Play Console:
- "상품" 메뉴에서 구독 상품이나 인앱 상품을 등록합니다.
- SKU 값이 com.example.my_subscription과 같은 형식으로 정확히 설정되었는지 확인하세요.
- App Store Connect:
- 인앱 구매 메뉴에서 SKU를 등록하고 상태가 "승인됨"인지 확인하세요.
4. 디버깅 로그 추가
console.log를 사용하여 SKU가 올바르게 전달되는지 확인하세요.
5. 시뮬레이터 사용 불가
IAP는 실제 기기에서만 테스트 가능합니다. iOS 시뮬레이터나 Android 에뮬레이터에서는 오류가 발생할 수 있습니다. 반드시 실제 디바이스에서 테스트하세요.
자주 묻는 질문 (FAQ)
1. "IAP Initialization error"가 앱 배포 전에도 발생하나요?
네, 앱이 Play Store 또는 App Store에 배포되지 않았다면 이 오류가 발생할 가능성이 높습니다. 반드시 테스트 트랙에 앱을 배포하고 테스트 계정을 사용하세요.
2. SKU를 단일 문자열로 전달해도 되나요?
아니요. react-native-iap는 SKU를 항상 배열로 요구합니다. 단일 SKU를 사용할 경우에도 배열로 감싸 전달하세요.
3. SKU를 테스트 없이 사용할 수 있나요?
스토어에 SKU가 등록되지 않은 상태에서 IAP 기능을 테스트할 수 없습니다. 그러나 sandbox 환경에서 가짜 데이터를 사용하여 개발 중 테스트할 수는 있습니다.
결론
"IAP Initialization error: 'skus' is required" 오류는 주로 잘못된 SKU 전달 방식이나 앱 배포 상태로 인해 발생합니다.
'플러팅 AI > React-native' 카테고리의 다른 글
| RN 으로 짠 Modal 이 android 에서는 잘만 작동하다가 IOS는 이유 (0) | 2024.12.26 |
|---|---|
| React Native에서 iOS 문제 해결 가이드 (1) | 2024.12.20 |
| IOS 앱 아이콘 만들고 적용시켜보자 (1) | 2024.12.17 |
| React Native iOS에서 겪은 두 가지 문제와 해결 방법 (1) | 2024.12.17 |
| React Native iOS 빌드 시 검은 화면과 번들 중복 실행 문제 해결 (0) | 2024.12.17 |