Android IAP 사용 시 NullPointerException 에러 해결 방법
문제점
Java 에러 메시지:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
에러의 원인은 react-native-iap에서 requestSubscription 메서드 호출 시, subscriptionOffers 매개변수의 형식이 올바르지 않아서 발생한 것으로 보입니다.
수정 전 코드
const purchase = await RNIap.requestSubscription({ sku: skus, subscriptionOffers: [{ offerIdToken: offerToken }], });
문제점:
- subscriptionOffers 배열 내에 각 객체에서 sku 값이 누락되었습니다.
- Google Play Billing에서는 subscriptionOffers의 각 객체가 **sku**와 offerIdToken 모두를 포함해야 합니다.
- 이로 인해 null 객체 참조 오류가 발생.
수정 후 코드
const purchase = await RNIap.requestSubscription({ sku: skus, subscriptionOffers: [{ sku: skus, offerIdToken: offerToken
수정 내용:
- subscriptionOffers 배열 내 각 객체에 sku 값을 추가.
- sku는 구독 상품의 식별자이며, offerIdToken은 특정 오퍼(할인 조건 등)를 식별하는 데 사용됩니다.
- 수정된 코드는 Google Play Billing이 요구하는 데이터 형식에 맞게 호출됩니다.
정리: 수정 전/후 차이점
항목수정 전수정 후
| sku 필드 포함 여부 | 포함되지 않음 | 포함됨 |
| subscriptionOffers 형식 | [{ offerIdToken: offerToken }] | [{ sku: skus, offerIdToken: offerToken }] |
| 에러 발생 여부 | Google Play Billing에서 데이터 형식 오류로 NullPointerException 발생 | 올바른 형식으로 수정되어 오류 해결 |
'플러팅 AI > React-native' 카테고리의 다른 글
| 오류 메시지: purchase is not suitable to be purchased RN.IAP android (0) | 2025.01.14 |
|---|---|
| offerToken is required for constructing ProductDetailsParams for subscriptions 에러 해결 방법 (0) | 2025.01.14 |
| Firebase를 통한 Google 로그인이 내부 테스트 트랙에서 작동하지 않는 문제 (0) | 2025.01.11 |
| RN iOS 구독 결제 문제 해결 (1) | 2025.01.11 |
| RN 으로 짠 Modal 이 android 에서는 잘만 작동하다가 IOS는 이유 (0) | 2024.12.26 |