기존앱에서 BillingClient 3.0을 사용중이였는데
22년 11월 1일부로 4.0이상으로 마이그레이션을 해야한다고한다.
4.0으로 올리면 바뀌는것이 크게없어 조금만 바꾸면 되지만,
이왕 할꺼 5.0으로 마이그레이션을 해보자고 했다.
앱에서 사용중인 결제 상품은 인앱광고제거 상품하나 이므로 쉽게 마이그레이션 할수 있을거라 생각했다.
https://developer.android.com/google/play/billing/migrate-gpblv5
해당글을 보면 알겠지만,
5.0은 정기결제상품에대한 변경이 큰 편이라 인 앱쪽은 크게 달리지는것이 없는것 같다.
4.0이전 버전은 상품을 sku로 관리했다면
5.0이후는 product라는 것을 관리한다.
https://itstudy-mary.tistory.com/m/399 글을 참고를 좀했다.
(감사해요.. 덕분이에요)
본인은 Hilt를 사용중이라, 모듈화 시키고,입앱상품에 대한 결제처리이다.
/**
* 기존 구매 목록 처리
*/
fun queryPurchase() {
if (!billingClient.isReady) {
Log.e(TAG, "queryPurchases: BillingClient is not ready")
}
// Query for existing subscription products that have been purchased.
billingClient.queryPurchasesAsync(
QueryPurchasesParams.newBuilder().setProductType(BillingClient.ProductType.INAPP).build()
) { billingResult, purchaseList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
if (purchaseList.isNotEmpty()) {
purchaseList.forEach {
Log.i(TAG,it.products.toString())
if (it.products.contains(REMOVE_ADS)) {
removeAddStatus.value = true
}
Log.i(TAG,"광고제거 상태 : $removeAddStatus")
}
} else {
Log.i(TAG, "items : empty") }
} else {
Log.e(TAG, billingResult.debugMessage)
}
}
}
모듈 초기화시 구매상태를 반환해주는 함수를 만들었고,
var removeAddStatus = MutableStateFlow(false)
광고제거상태를 flow로 collect해주게하였다.