android - 使用 Android BillingClient 2.1 检索应用内购买,返回空列表

标签 android android-billing

我正尝试使用 Android BillingClient 2.1 检索可用购买的列表(仅一项),如所述 here .像这样:

private suspend fun querySkuDetails() {
    val skuList = ArrayList<String>()
    skuList.add("premium_upgrade")
    val params = SkuDetailsParams.newBuilder()
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP)
    val skuDetailsResult = withContext(Dispatchers.IO) {
        billingClient.querySkuDetails(params.build())
    }
    if (skuDetailsResult.billingResult.responseCode ==  BillingClient.BillingResponseCode.OK && skuDetailsResult.skuDetailsList != null) {
        for (skuDetails in skuDetailsResult.skuDetailsList as List<SkuDetails>) {
            val sku = skuDetails.sku
            val price = skuDetails.price
            if ("premium_upgrade" == sku) {
                premiumUpgradePrice = price
            }
        }
    }
}

在 Play 商店控制台中,我已经上传了准备商店页面的应用程序并添加了一个名为“premium_upgrade”的托管产品。但我还没有发布这个应用程序,因为它缺少这个重要的部分。

由于某些原因 skuDetailsResult.skuDetailsList 总是返回空的。 billingResult 中没有debugMessage。所以我有点卡住了。有什么建议吗?

最佳答案

经过一些搜索,我在左侧菜单的下方找到了测试部分。 https://developer.android.com/google/play/billing/billing_testing

在本地测试时,我不得不将 sku 产品 ID 更改为保留的谷歌 ID 之一。因此,为了进行测试,我必须将 premium_upgrade 更改为 android.test.purchased 然后您可以尝试整个流程。

一旦您对管理产品进行了测试购买,它会说您已经拥有该产品并且您会在那里被阻止。如果您需要重新测试购买,您可以使用此 adb 命令清除购买历史并再次运行。

adb shell pm clear com.android.vending

关于android - 使用 Android BillingClient 2.1 检索应用内购买,返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61154786/

相关文章:

java - 将 android :Theme. 对话框更改为 Light AppCompat 对话框

android - 如何在 android espresso 中访问回收器 View 的 subview ?

java - 读取服务器发送的数据时出现空字符串

android - 使用SafeArgs将参数从 fragment 传递到 Activity

android - 通过应用内结算获取谷歌分析税

android - 为什么使用应用内计费设置开发人员有效负载很重要?

android - ANR com.android.vending.billing.IInAppBillingService

android - 添加两个具有不同主题的 AppCompat 工具栏

android - 接收广播时出错 Intent act=com.android.vending.billing.PURCHASES_UPDATED

android - 您请求的项目无法购买