diff --git a/app/build.gradle b/app/build.gradle index f7575fd..649a289 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -40,8 +40,8 @@ android { applicationId "kr.co.vividnext.sodalive" minSdk 23 targetSdk 33 - versionCode 49 - versionName "1.9.2" + versionCode 57 + versionName "1.9.10" } buildTypes { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/iap/CanChargeIapFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/iap/CanChargeIapFragment.kt index 0027063..3d8a79a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/iap/CanChargeIapFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/mypage/can/charge/iap/CanChargeIapFragment.kt @@ -56,29 +56,9 @@ class CanChargeIapFragment : BaseFragment( setupBillingClient() } - override fun onStart() { - super.onStart() - - billingClient.startConnection(object : BillingClientStateListener { - override fun onBillingServiceDisconnected() { - viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.") - viewModel.setLoading(false) - } - - override fun onBillingSetupFinished(billingResult: BillingResult) { - if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { - queryAndConsumeUnconsumedPurchases() - } else { - viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.") - viewModel.setLoading(false) - } - } - }) - } - - override fun onStop() { - super.onStop() + override fun onDestroy() { billingClient.endConnection() + super.onDestroy() } private fun bindData() { @@ -171,6 +151,22 @@ class CanChargeIapFragment : BaseFragment( .build() loadingDialog.show(screenWidth) + + billingClient.startConnection(object : BillingClientStateListener { + override fun onBillingServiceDisconnected() { + viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.") + viewModel.setLoading(false) + } + + override fun onBillingSetupFinished(billingResult: BillingResult) { + if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { + queryAndConsumeUnconsumedPurchases() + } else { + viewModel.showToast("인 앱 결제 이용이 불가능 합니다. 다시 시도해 주세요.") + viewModel.setLoading(false) + } + } + }) } @SuppressLint("NotifyDataSetChanged") @@ -219,7 +215,9 @@ class CanChargeIapFragment : BaseFragment( if (purchaseList.isNotEmpty()) { for (purchase in purchaseList) { if (!purchase.isAcknowledged) { - consumePurchase(purchase) + consumePurchase(purchase) { + queryAvailableCans() + } } } } else { @@ -229,14 +227,14 @@ class CanChargeIapFragment : BaseFragment( } } - private fun consumePurchase(purchase: Purchase) { + private fun consumePurchase(purchase: Purchase, onSuccess: () -> Unit) { val params = ConsumeParams.newBuilder() .setPurchaseToken(purchase.purchaseToken) .build() billingClient.consumeAsync(params) { billingResult, _ -> if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { - queryAvailableCans() + onSuccess() } } } @@ -251,15 +249,17 @@ class CanChargeIapFragment : BaseFragment( selectedProductDetails = selectedProductDetails!!, purchase = purchase ) { chargeCan -> - handler.post { - viewModel.showToast("캔이 충전되었습니다") - SharedPreferenceManager.can += chargeCan + consumePurchase(purchase) { + handler.post { + viewModel.showToast("캔이 충전되었습니다") + SharedPreferenceManager.can += chargeCan - if (activity != null) { - if (activity as? CanChargeActivity != null) { - (activity as CanChargeActivity).successIapCharge() - } else { - requireActivity().finish() + if (activity != null) { + if (activity as? CanChargeActivity != null) { + (activity as CanChargeActivity).successIapCharge() + } else { + requireActivity().finish() + } } } }