Bra*_*ram 7 java android in-app-billing
我正在将我的应用程序从 IAB v1 升级到 IAB v5。
我可以成功连接计费客户端。
但如果我随后尝试查询产品详细信息,我会收到来自 BillingClient 的警告:
不支持查询商品详情。
查询代码是从文档中复制的:
QueryProductDetailsParams queryProductDetailsParams =
QueryProductDetailsParams.newBuilder()
.setProductList(
List.of(
QueryProductDetailsParams.Product.newBuilder()
.setProductId("premium")
.setProductType(BillingClient.ProductType.INAPP)
.build()))
.build();
billingClient.queryProductDetailsAsync(
queryProductDetailsParams,
new ProductDetailsResponseListener() {
public void onProductDetailsResponse(BillingResult billingResult,
List<ProductDetails> productDetailsList) {
// check billingResult
// process returned productDetailsList
Log.d(TAG, "Got details for " + productDetailsList.size() + " products." );
}
}
);
Run Code Online (Sandbox Code Playgroud)
onProductDetailsResponseListener()调用该方法,但产品详细信息列表为空。
产品premiumID有效,已使用IAB v1库多次成功购买。
为什么我会收到此警告消息?为什么不支持查询详情?
我的 gradle 文件引入了 IAB v5:
dependencies {
...
api 'com.android.billingclient:billing:5.0.0'
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下 API 通过 API 检查功能支持:
billingClient.isFeatureSupported(BillingClient.FeatureType.PRODUCT_DETAILS);
Run Code Online (Sandbox Code Playgroud)
我也回来了Response Code: FEATURE_NOT_SUPPORTED, Debug Message: Client does not support ProductDetails.
我测试的手机操作系统的 API 为 19。
情况比我想象的还要糟糕!如果没有产品详细信息结果,我无法启动购买流程!至少在 IAB v1 中,您无需先获取 SKU 详细信息即可进行购买。
是否支持产品详细信息功能似乎取决于设备。
使用 API30 设备,我可以获得功能支持状态:
PRODUCT_DETAILS support: Response Code: OK, Debug Message:
Run Code Online (Sandbox Code Playgroud)
IAB 指南没有提到这一点,但在我看来,IAB v5 与 API19 设备不兼容。
我看到了同样的事情,但通过更新 Google Play 商店,能够让它在我的两台旧设备(Nexus 9、Android 7.1.1 / API 25 和运行 Android 5.1.1 / API 22 的 Nexus 10)上运行在设备上。我这样做是通过:
我尝试了几次等待下载,但没有看到,然后重新启动 Play 商店,但最终点击“更新 Play 商店”报告它已是最新的(版本为 32.9.14-21)。Android 5.1.1 设备在运行之前必须下载相当多的其他更新,所以我必须要有耐心。我不确定哪些更新是关键的,所以我只是让它下载所有内置的东西 - 只做商店是不够的。
这两款设备都已经很长时间(几年)没有打开或连接到互联网了,所以我怀疑客户是否会遇到这个问题。
确保两台设备均已完成更新后,我在设备上重新运行了应用程序的调试版本,并且它能够正常获取价格。
| 归档时间: |
|
| 查看次数: |
1832 次 |
| 最近记录: |