Android IAB v5:不支持查询产品详细信息

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)

更新1

如果我使用以下 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。

更新2

情况比我想象的还要糟糕!如果没有产品详细信息结果,我无法启动购买流程!至少在 IAB v1 中,您无需先获取 SKU 详细信息即可进行购买。

更新3

是否支持产品详细信息功能似乎取决于设备。

使用 API30 设备,我可以获得功能支持状态:

PRODUCT_DETAILS support: Response Code: OK, Debug Message:
Run Code Online (Sandbox Code Playgroud)

IAB 指南没有提到这一点,但在我看来,IAB v5 与 API19 设备不兼容。

mm2*_*001 3

我看到了同样的事情,但通过更新 Google Play 商店,能够让它在我的两台旧设备(Nexus 9、Android 7.1.1 / API 25 和运行 Android 5.1.1 / API 22 的 Nexus 10)上运行在设备上。我这样做是通过:

  • 打开 Play 商店
  • 转到 Play 商店内的“设置”(通过点击右上角的“我的”图标并从菜单中选择“设置”)
  • 点击关于
  • 在 Play 商店版本下,我点击了“更新 Play 商店”并按照提示操作

我尝试了几次等待下载,但没有看到,然后重新启动 Play 商店,但最终点击“更新 Play 商店”报告它已是最新的(版本为 32.9.14-21)。Android 5.1.1 设备在运行之前必须下载相当多的其他更新,所以我必须要有耐心。我不确定哪些更新是关键的,所以我只是让它下载所有内置的东西 - 只做商店是不够的。

这两款设备都已经很长时间(几年)没有打开或连接到互联网了,所以我怀疑客户是否会遇到这个问题。

确保两台设备均已完成更新后,我在设备上重新运行了应用程序的调试版本,并且它能够正常获取价格。