图书馆billing.ktx促进了什么“惯用的Kotlin”?

在研究回答了我的问题在这里,我发现(后很沮丧工作的几天)的科特林计费库“billing.ktx”一对夫妇开发者页面的引用要求

包含 Kotlin 扩展和协程支持,使您能够在使用 Google Play 的计费系统时编写惯用的 Kotlin

但既没有提供详细信息,也没有提供更多信息的链接。Play 计费示例“Classy Taxi”和“TrivialDrive”已被重写为使用 Kotlin,但几乎不是“惯用的 Kotlin”,当然也没有使用协程,也没有使用这个库。他们现在两岁了,在这个快速移动的舞台上显示了他们的年龄。

我的问题是这个库在惯用的 Kotlin 甚至协程支持方面提供了什么?在使用这个库之前,我在一些计费客户端功能上取得了一些进展(可以在参考问题中看到),但我看不出使用它有什么不同。更具体地说,“launchBillingFlow”看起来无法转换,但是是吗?

只需链接到某处以查找信息就足够了。为什么要为计费客户找到除类定义以外的其他内容如此困难?

回答

我找不到任何文档。这个答案中的所有内容都来自查看billing-ktx当我向我的项目添加对该库的依赖项时出现的aar。

这个库看起来很小。它提供了三个新的“结果”类以及四个扩展函数BillingClient来用suspend funs替换基于回调的代码。

package com.android.billingclient.api

public suspend fun BillingClient.acknowledgePurchase(params: AcknowledgePurchaseParams): BillingResult { /* compiled code */ }
public suspend fun BillingClient.consumePurchase(params: ConsumeParams): ConsumeResult { /* compiled code */ }
public suspend fun BillingClient.queryPurchaseHistory(skuType: String): PurchaseHistoryResult { /* compiled code */ }
public suspend fun BillingClient.querySkuDetails(params: SkuDetailsParams): SkuDetailsResult { /* compiled code */ }

有了这些,你可以在协程中编写:

val result = billingClient.querySkuDetails(params.build())
// you can now access result.billingResult or result.skuDetailsList

而不是像文档中出现的那样:

billingClient.querySkuDetailsAsync(params.build()) { billingResult, skuDetailsList ->
    // Process the result.
}


以上是图书馆billing.ktx促进了什么“惯用的Kotlin”?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>