我是android的新手,正在尝试第一次实现应用内计费。
我正在使用google play应用内库。https://developer.android.com/google/play/billing/billing_library_overview
我想在kotlin中实现订阅应用内购买。
我无法解决这个问题:挂起函数'acknowledgePurchase‘只能从协程或另一个挂起函数调用。如何调用此函数?
下面是我的handlePurchase方法:
fun handlePurchase(purchase: Purchase) {
if (purchase.purchaseState === Purchase.PurchaseState.PURCHASED) {
if (!purchase.isAcknowledged) {
val params =
AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase.purchaseToken)
billingClient.acknowledgePurchase(params.build()) }
}
}发布于 2020-12-16 07:36:48
假设你在你的应用中使用了kotlin coroutines。
BillingClient#acknowledgePurchase(params.build())是只能从另一个suspend function或coroutine scope调用的suspended function。
假设你在一个fragment中使用这个fun handlePurchase(purchase: Purchase),你可以使用viewLifecycleOwner.lifecycleScope.launch{}来启动它。
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
}
}
}
}
}
}https://stackoverflow.com/questions/64884229
复制相似问题