首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >acknowledgePurchase应用内计费协程

acknowledgePurchase应用内计费协程
EN

Stack Overflow用户
提问于 2020-11-18 06:23:51
回答 1查看 216关注 0票数 1

我是android的新手,正在尝试第一次实现应用内计费。

我正在使用google play应用内库。https://developer.android.com/google/play/billing/billing_library_overview

我想在kotlin中实现订阅应用内购买。

我无法解决这个问题:挂起函数'acknowledgePurchase‘只能从协程或另一个挂起函数调用。如何调用此函数?

下面是我的handlePurchase方法:

代码语言:javascript
复制
fun handlePurchase(purchase: Purchase) {
        if (purchase.purchaseState === Purchase.PurchaseState.PURCHASED) {
            if (!purchase.isAcknowledged) {
                val params = 
AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase.purchaseToken)
                    billingClient.acknowledgePurchase(params.build()) }
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2020-12-16 07:36:48

假设你在你的应用中使用了kotlin coroutines

BillingClient#acknowledgePurchase(params.build())是只能从另一个suspend functioncoroutine scope调用的suspended function

假设你在一个fragment中使用这个fun handlePurchase(purchase: Purchase),你可以使用viewLifecycleOwner.lifecycleScope.launch{}来启动它。

代码语言:javascript
复制
fun handlePurchase(purchase: Purchase) {
        if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
            if (!purchase.isAcknowledged) {
                val params = AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase.purchaseToken)
                viewLifecycleOwner.lifecycleScope.launch {
                    val result = billingClient.acknowledgePurchase(params.build())
                    when (result.responseCode) {
                        BillingClient.BillingResponseCode.OK -> {
                            //success flow}
                        }
                        else -> {
                            //error flow
                        }
                    }
                }
            }
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64884229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档