android - 图书馆 billing.ktx 促进了什么“惯用的 Kotlin”?
问题描述
在研究我的问题的答案时,我发现(经过几天非常令人沮丧的工作)引用了一些开发人员页面声称的 kotlin 计费库“billing.ktx”
包含 Kotlin 扩展和协程支持,使您能够在使用 Google Play 的计费系统时编写惯用的 Kotlin
但既没有提供详细信息,也没有提供更多信息的链接。Play 计费示例“Classy Taxi”和“TrivialDrive”已被重写为使用 Kotlin,但几乎没有“惯用的 Kotlin”,当然也没有使用协程,也没有使用这个库。他们现在已经两岁了,在这个快速发展的舞台上展示了他们的年龄。
我的问题是这个库在惯用的 Kotlin 甚至协程支持方面提供了什么?在使用这个库之前,我在一些计费客户端功能方面取得了一些进展(如在引用的问题中所见),但我看不出使用它有什么不同。更具体地说,“launchBillingFlow”看起来无法转换,但真的是这样吗?
只需链接到某个地方以查找信息就足够了。为什么很难为计费客户端找到更多的类定义?
解决方案
我找不到任何文件。这个答案中的所有内容都来自查看billing-ktx
当我将对该库的依赖项添加到我的项目时出现的 aar。
这个库看起来非常小。它提供了三个新的“结果”类以及四个扩展函数BillingClient
来用 s 替换基于回调的代码suspend fun
。
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.
}
推荐阅读
- wso2 - WSO2 身份服务器可以在自助注册期间根据名字和姓氏生成用户名吗?
- azure - 我应该在 Azure Function 项目中创建自己的 settings.json 吗?
- python - Python 和 Pandas - 用数字列表填充 Pandas DataFrame 列
- json - 使用 FeedIron 从 TT-RSS 提要中删除链接
- css - 使用引导行容器和列将列颜色扩展到页面底部
- android-sqlite - 具有多列的@Relation Room DB
- javascript - WUB 中的正则表达式提取字符
- .net-core - 在 wix 中检查 .net 核心
- mysql - 无法从 Amazon linux EC2 实例上的 Wordpress 连接到 RDS mysql 数据库
- c# - 如何使用工作副本方法正确保存新数据