From 0916c3a38d00fce2ae2aec0fa038461a5c389af5 Mon Sep 17 00:00:00 2001 From: NickSxti Date: Tue, 7 Apr 2026 18:44:50 +0400 Subject: [PATCH] Update sample app to use QDeferredPurchasesListener Replaces the deprecated QEntitlementsUpdateListener in the sample's EntitlementsFragment with QDeferredPurchasesListener, which exposes the full QPurchaseResult (entitlements, status, error). Toast messages now branch on the purchase result status, and the related strings were renamed to reflect the new listener. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../qonversion/sample/EntitlementsFragment.kt | 23 ++++++++++++------- sample/src/main/res/values/strings.xml | 6 ++--- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/sample/src/main/java/io/qonversion/sample/EntitlementsFragment.kt b/sample/src/main/java/io/qonversion/sample/EntitlementsFragment.kt index 6f727db4..24321123 100644 --- a/sample/src/main/java/io/qonversion/sample/EntitlementsFragment.kt +++ b/sample/src/main/java/io/qonversion/sample/EntitlementsFragment.kt @@ -8,9 +8,10 @@ import android.widget.Toast import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager import com.qonversion.android.sdk.Qonversion +import com.qonversion.android.sdk.dto.QPurchaseResult import com.qonversion.android.sdk.dto.QonversionError import com.qonversion.android.sdk.dto.entitlements.QEntitlement -import com.qonversion.android.sdk.listeners.QEntitlementsUpdateListener +import com.qonversion.android.sdk.listeners.QDeferredPurchasesListener import com.qonversion.android.sdk.listeners.QonversionEntitlementsCallback import io.qonversion.sample.databinding.FragmentEntitlementsBinding @@ -47,7 +48,7 @@ class EntitlementsFragment : Fragment() { } binding.buttonSetListener.setOnClickListener { - setEntitlementsListener() + setDeferredPurchasesListener() } binding.buttonRestore.setOnClickListener { @@ -83,19 +84,25 @@ class EntitlementsFragment : Fragment() { }) } - private fun setEntitlementsListener() { - Qonversion.shared.setEntitlementsUpdateListener(object : QEntitlementsUpdateListener { - override fun onEntitlementsUpdated(entitlements: Map) { + private fun setDeferredPurchasesListener() { + Qonversion.shared.setDeferredPurchasesListener(object : QDeferredPurchasesListener { + override fun deferredPurchaseCompleted(purchaseResult: QPurchaseResult) { _binding?.let { - displayEntitlements(entitlements) + displayEntitlements(purchaseResult.entitlements) + } + val messageRes = when { + purchaseResult.isSuccessful -> R.string.deferred_purchase_completed + purchaseResult.isPending -> R.string.purchase_pending + purchaseResult.isCanceledByUser -> R.string.purchase_canceled + else -> R.string.purchase_failed } - Toast.makeText(context, getString(R.string.entitlements_updated_via_listener), Toast.LENGTH_SHORT).show() + Toast.makeText(context, getString(messageRes), Toast.LENGTH_SHORT).show() } }) isListenerSet = true binding.buttonSetListener.text = getString(R.string.listener_set) binding.buttonSetListener.isEnabled = false - Toast.makeText(context, getString(R.string.entitlements_listener_set), Toast.LENGTH_SHORT).show() + Toast.makeText(context, getString(R.string.deferred_purchases_listener_set), Toast.LENGTH_SHORT).show() } private fun restore() { diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml index 34ba971f..61bc8e26 100644 --- a/sample/src/main/res/values/strings.xml +++ b/sample/src/main/res/values/strings.xml @@ -60,7 +60,7 @@ Load Entitlements - Set Entitlements Update Listener + Set Deferred Purchases Listener Listener Set ✓ Restore Sync Purchases @@ -68,8 +68,8 @@ Tap the button above to load your entitlements No entitlements found Error loading entitlements - Entitlements update listener set - Entitlements updated via listener + Deferred purchases listener set + Deferred purchase completed Purchases restored successfully Purchases synced Active