我正在try 从购买中获取ProductID:

private fun queryPurchases(purchases: List<Purchase>){

    for (purchase in purchases) {

        Log.d("pikaboo", purchase.toString())

        when (purchase.purchaseState) {
            Purchase.PurchaseState.PURCHASED -> {

                val purchaseTime = (purchase.purchaseTime / 1000).toInt()

                when (purchase.productId) {
                    "no_ads_in_app_month" -> {

                    }
                    "no_ads_in_app_3_months" -> {

                    }
                }
            }
        }
    }
} 

以下是日志(log):

Purchase. Json: {"orderId":"GPA.333.333.333","packageName":"de.bla.foo","productId":"no_ads_in_app_3_months","purchaseTime":1694810217354,"purchaseState":0,"purchaseToken":"xxxxxxxxxxxx","quantity":1,"acknowledged":true}

purchase.productIdproductId等于Unresolved reference

其他像purchase.purchaseTimepurchase.purchaseStatepurchase.packageName这样的东西都能用.

为什么不是purchase.productId呢?这是个窃听器吗?如何解决这一问题?

推荐答案

正如在Purchase类上的Android Developers documentation中所写的,您应该能够从getProducts()方法中获得产品ID. ITS的返回类型为List<String>.

我对计费库不是很熟悉,所以我认为购买可以由多个产品代表.您可能应该遍历列表,并将when运算符放入某种循环中.

Android相关问答推荐

Kotlin多平台向导,不兼容版本(ANP 8.2.0)ANP 8.1.2

如何检测HitTest是否命中给定的网格对象?

Android,从C++调用的铁 rust 库缺少符号

如何在Android Jetpack Compose中找到我的手机屏幕一行有多少个单词

请求标头为空/无法通过拦截器获取

无法将Kotlin序列化添加到Android项目

警告:应用必须面向 Android 13(API 级别 33)或更高版本.确实如此

Android 构建失败:找不到 flexbox2.0.1.aar

将 React Native 应用程序背景带到前台

appcompat 依赖从何而来?

[Android][Room] 将密封类存储到 Room 数据库中

在 Android Studio 中获取更新版本的 Picasso 库的错误警告消息

如何在 Jetpack Compose 中创建无限pager

无法找到方法 ''java.io.File > org.jetbrains.kotlin.gradle.tasks.KotlinCompile.getDestinationDir()

如何在 BottomBar jetpack compose 中删除选定的椭圆项目 colored颜色

java.lang.IllegalArgumentException:与请求匹配的导航目的地 NavDeepLinkRequest

使用 Room 在 SQLite 中保存复杂的 JSON 响应

Jetpack 使用 Canvas 组成半圆

WindowManager 内的 RecyclerView 不更新

在使用 Retrofit 和 Room 时,我是否需要提及协程调度程序?