我知道我可以使用以下代码通过提供 ProductId 来查询应用内产品详细信息。
目前我希望查询所有应用内商品详情,是否必须提供所有ProductId?
fun queryProductDetails() {
val params = QueryProductDetailsParams.newBuilder()
val productList = mutableListOf<QueryProductDetailsParams.Product>()
for (product in LIST_OF_PRODUCTS) {
productList.add(
QueryProductDetailsParams.Product.newBuilder()
.setProductId(product)
.setProductType(BillingClient.ProductType.INAPP)
.build()
)
}
params.setProductList(productList).let { productDetailsParams ->
billingClient.queryProductDetailsAsync(productDetailsParams.build(), mOnProductDetailsResponse)
}
}
private val LIST_OF_PRODUCTS = listOf(BASIC_SUB, PREMIUM_SUB)
如果不指定
productId
和 type
(BillingClient.ProductType.INAPP
或 BillingClient.ProductType.SUBS
),则无法查询所有应用内产品。
如果某些
productId
不存在或提供了错误的 type
,您不会收到错误,而只是返回一个列表,其中仅包含符合这两个条件的产品详细信息。
例如如果问题中的
BASIC_SUB
和 PREMIUM_SUB
是活跃订阅,那么使用 ProductType.INAPP
查询时您将收到一个空列表,而使用 ProductType.SUBS
查询时您将收到 2 个产品详细信息的列表。