【问题标题】:What "idiomatic Kotlin" does the library billing.ktx facilitate?图书馆 billing.ktx 促进了什么“惯用的 Kotlin”?
【发布时间】:2021-03-18 02:22:28
【问题描述】:

在研究我的问题 here 的答案时,我发现(经过几天非常令人沮丧的工作)引用了几个开发人员页面声称的 kotlin 计费库“billing.ktx”

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

但既没有提供详细信息,也没有提供更多信息的链接。 Play 计费示例 "Classy Taxi" and "TrivialDrive" 已被重写为使用 Kotlin,但几乎没有“惯用的 Kotlin”,当然也没有使用协程,也没有使用这个库。他们现在已经两岁了,在这个瞬息万变的舞台上展现了他们的年龄。

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

只需链接到某个地方以查找信息就足够了。为什么要为计费客户端找到更多的类定义如此困难?

【问题讨论】:

    标签: android kotlin-coroutines play-billing-library


    【解决方案1】:

    我找不到任何文档。此答案中的所有内容都来自查看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.
    }
    

    【讨论】:

    • 是的,我也想看那里,我该怎么做?显示我的零碎知识:(在您的示例中这两个函数的名称之间是错字吗?我认为它们做不同的事情(本地和远程查询)。
    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    相关资源
    最近更新 更多