You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin Billing库4.0.0中purchase.sku找不到问题求助

解决Billing Library 4.0.0中purchase.sku找不到的问题

问题根源

Google Play Billing Library 4.0.0版本开始,Purchase类的**sku字段被官方移除**,取而代之的是skus集合(因为单笔订单可能包含多个SKU,比如订阅升级/降级场景),所以直接访问purchase.sku会编译报错。

修复方案

把代码中所有的purchase.sku替换为purchase.skus.firstOrNull()(如果你的业务场景中每个订单只会对应一个SKU,也可以用purchase.skus.first(),但建议用firstOrNull()做空安全处理)。

修改后的完整代码示例:

GlobalScope.launch {
    subsList.forEach { purchase ->
        val purchaseSku = purchase.skus.firstOrNull()
        when (purchaseSku) {
            SKU_RIFE_MONTHLY,
            SKU_RIFE_YEARLY_FLASHSALE,
            SKU_RIFE_ADVANCED_MONTHLY,
            SKU_RIFE_ADVANCED_YEAR_FLASHSALE,
            SKU_RIFE_HIGHER_MONTHLY,
            SKU_RIFE_HIGHER_ANNUAL_FLASH_SALE,
            QUANTUM_TIER_SUBS_MONTH,
            QUANTUM_TIER_SUBS_ANNUAL -> {
                albumDao.setNewUnlockedByTierId(true, NewPurchaseActivity.QUANTUM_TIER_ID)
            }

            HIGHER_QUANTUM_TIER_INAPP_WELLNESS_I.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_WELLNESS_I.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_WELLNESS_II.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_WELLNESS_II.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_WELLNESS_III.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_WELLNESS_III.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_LIFE_FORCE.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_LIFE_FORCE.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_LUCK.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_LUCK.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_SUCCESS.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_SUCCESS.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_HAPPINESS.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_HAPPINESS.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_LOVE.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_ABUNDANCE_LOVE.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_BRAIN.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_BRAIN.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_WISDOM.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_WISDOM.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_MANIFESTING.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_MANIFESTING.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_TRANSFORMATION_MEDITATION.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_TRANSFORMATION_MEDITATION.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_PROTECTION.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_PROTECTION.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_BEAUTY_I.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_BEAUTY_I.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_BEAUTY_II.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_BEAUTY_II.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_SKIN_CARE.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_SKIN_CARE.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_FITNESS.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_FITNESS.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_DMT.sku -> {
                //albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_DMT.Id)
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_DMT.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_AYAHUASCA.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_AYAHUASCA.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_NAD.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_NAD.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_NMN.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_NMN.categoryId)
            }

            HIGHER_QUANTUM_TIER_INAPP_DIGITAL_IVM.sku -> {
                albumDao.setNewUnlockedByCategoryId(true, HIGHER_QUANTUM_TIER_INAPP_DIGITAL_IVM.categoryId)
            }
        }
    }
}

额外注意事项

  • 如果你的业务存在单订单多SKU的场景(比如订阅套餐升级),不要直接取第一个SKU,应该遍历purchase.skus集合,逐个处理每个SKU对应的解锁逻辑。
  • 确保项目中导入的是Billing Library 4.0.0及以上版本的com.android.billingclient.api.Purchase类,避免混淆或旧版本类的引用。

内容的提问来源于stack exchange,提问作者Adil Saiyad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 13:35:40