플러팅 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 발생 올바른 형식으로 수정되어 오류 해결