문제와 해결 요약
문제
- 오류 메시지: purchase is not suitable to be purchased
- 발생 상황:
- RNIap.finishTransaction 호출 시, purchase 객체가 적절하지 않거나 유효하지 않음.
- 이전에 완료되지 않은 트랜잭션이 존재하거나, purchaseToken이 없을 때 발생.
해결 방법
- getAvailablePurchases로 최신 구매 정보 가져오기:
- RNIap.getAvailablePurchases()를 호출하여 사용 가능한 모든 구매 데이터를 가져옵니다.
- 필요한 구매를 productId로 필터링하여 적절한 purchase 객체를 확인.
- 트랜잭션 완료 처리 개선:
- getAvailablePurchases로 가져온 데이터를 사용해 finishTransaction 호출.
- 디버깅 및 상태 확인:
- 구매 데이터(purchase)와 트랜잭션 상태를 로깅.
- purchaseStateAndroid와 같은 속성을 확인하여 트랜잭션 상태를 명확히.
적용된 코드 변경 사항
- getAvailablePurchases 추가:
- 트랜잭션 완료 호출 전에 사용 가능한 구매 데이터를 확인.
- 에러 메시지와 디버깅 정보 강화:
- 오류가 발생한 경우 더 상세한 정보를 제공.
주요 코드 스니펫
const availablePurchases = await RNIap.getAvailablePurchases();
const updatedPurchase = availablePurchases.find( (p) => p.productId === productId ); if (!updatedPurchase) {
Alert.alert('구매 실패', '업데이트된 구매 데이터를 찾을 수 없습니다.');
return false; }
await RNIap.finishTransaction({ purchase: updatedPurchase, isConsumable: false, // 구독은 소비되지 않음 });
결과
- 문제는 이전에 완료되지 않은 트랜잭션이나 유효하지 않은 구매 데이터를 처리하지 않아서 발생.
- getAvailablePurchases로 데이터를 갱신한 후 finishTransaction을 호출하니 문제 해결됨.
추가적으로 궁금한 점이 있거나 다른 도움 필요한 사항이 있으면 말씀해주세요! 😊
'플러팅 AI > React-native' 카테고리의 다른 글
| RN 버튼으로 재시작하기 (0) | 2025.01.15 |
|---|---|
| 구매 복원 기능 요약 (0) | 2025.01.14 |
| offerToken is required for constructing ProductDetailsParams for subscriptions 에러 해결 방법 (0) | 2025.01.14 |
| Android IAP 사용 시 NullPointerException 에러 해결 방법 (0) | 2025.01.14 |
| Firebase를 통한 Google 로그인이 내부 테스트 트랙에서 작동하지 않는 문제 (0) | 2025.01.11 |