플러팅 AI/React-native
Android IAP 사용 시 NullPointerException 에러 해결 방법
Solo.dev
2025. 1. 14. 02:22
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 발생 | 올바른 형식으로 수정되어 오류 해결 |