提问人:burhanyaprak 提问时间:2/8/2023 更新时间:5/8/2023 访问量:197
确定用户是否为高级用户 - Qonversion API
Determine the user is premium - Qonversion API
问:
通过 Qonversion API,我为用户添加了购买订阅的功能。当用户在购买订阅后返回时,我想检查订阅状态,但我从 checkEntitlements 获得“null”值作为回报。同时,虽然购买功能中购买是正的,但根本不进入onSuccess。如何查看用户的订阅状态?(当我在购买后再次尝试订阅时,谷歌说我已经订阅了,所以订阅过程是成功的。
片段:
class PurchaseFragment : Fragment() {
private var _binding: FragmentPurchaseBinding? = null
private val binding get() = _binding!!
private var product: QProduct? = null
展示产品:
private fun displayProducts() {
Qonversion.shared.offerings(object : QonversionOfferingsCallback {
override fun onSuccess(offerings: QOfferings) {
val mainOffering = offerings.main
if (mainOffering != null && mainOffering.products.isNotEmpty()) {
binding.monthlyPrice.text = mainOffering.products[0].prettyPrice
product = mainOffering.products[0]
}
}
override fun onError(error: QonversionError) {
Log.d(TAG, "Error: $error")
}
})
}
购买:
private fun makePurchase(product: QProduct) {
Qonversion.shared.purchase(
requireActivity(),
product,
callback = object : QonversionEntitlementsCallback {
override fun onSuccess(entitlements: Map<String, QEntitlement>) {
val premiumEntitlement = entitlements["premium_permisson"]
if (premiumEntitlement != null && premiumEntitlement.isActive) {
Log.d(TAG, "Entitlements: $premiumEntitlement")
} else {
Log.d(TAG, "Entitlements else: $premiumEntitlement")
}
}
override fun onError(error: QonversionError) {
// Handle error here
if (error.code === QonversionErrorCode.CanceledPurchase) {
Log.d(TAG, "Canceled")
}
}
})
}
检查用户状态:
private fun isItPremiumUser() {
Qonversion.shared.checkEntitlements(object : QonversionEntitlementsCallback {
override fun onSuccess(entitlements: Map<String, QEntitlement>) {
val premiumEntitlement = entitlements["premium_permisson"]
Log.d(TAG, "isItPremiumUser $premiumEntitlement") // it returns null
if (premiumEntitlement != null && premiumEntitlement.isActive) {
Log.d(TAG, "isItPremiumUser Entitlements: $premiumEntitlement")
// handle active entitlement here
// also you can check renew state if needed
// for example to check if user has canceled subscription and offer him a discount
when (premiumEntitlement.renewState) {
QEntitlementRenewState.NonRenewable -> {
Log.d(TAG, "NonRenewable Entitlements: $premiumEntitlement")
// NonRenewable is the state of a consumable or non-consumable in-app purchase
}
QEntitlementRenewState.WillRenew -> {
Log.d(TAG, "WillRenew Entitlements: $premiumEntitlement")
// WillRenew is the state of an auto-renewable subscription
}
QEntitlementRenewState.BillingIssue -> {
Log.d(TAG, "BillingIssue Entitlements: $premiumEntitlement")
// Prompt the user to update the payment method.
}
QEntitlementRenewState.Canceled -> {
Log.d(TAG, "Canceled Entitlements: $premiumEntitlement")
// The user has turned off auto-renewal for the subscription, but the subscription has not expired yet.
// Prompt the user to resubscribe with a special offer.
}
else -> {
Log.d(TAG, "else Entitlements: $premiumEntitlement")
}
}
}
}
override fun onError(error: QonversionError) {
// handle error here
Log.d(TAG, "onError: $error")
}
})
}
答:
1赞
Kamo Spertsian
5/8/2023
#1
如果未在通话中调用,请检查方法。在 Qonversion 端处理您的购买时似乎出了点问题,提供给相应回调的错误信息将解释原因。此外,设备日志会很有帮助 - Qonversion SDK 在处理购买时会记录有用的信息。onSuccess
purchase
onError
如果Google端购买成功,则可能是Qonversion设置中的Qonversion产品中心配置或Google Play配置有问题。
您可以在官方文档中阅读更多相关信息 此处 和 此处.如果您遇到任何其他问题,请考虑通过网站小部件联系 Qonversion 支持,以获得更快的帮助。
下一个:会议室数据库迁移 - 位图
评论