querySkuDetailsAsync回调从未调用

时间:2019-11-29 19:57:22

标签: android in-app-purchase in-app-billing google-play-developer-api play-billing-library

我认为已正确执行了文档中的所有步骤,但是我无法到达querySkuDetailsAsync的回调,未报告任何错误。该应用程序可以在IAB上正常工作,现在我只是从旧库迁移到新的“ com.android.billingclient:billing:2.0.3”,但存在很多问题。 另一个问题,在新库中还需要使用Play控制台中的许可证密钥吗?我在新库中找不到有关使用它的文档。

我可以正确无误地到达此行billingClient.querySkuDetailsAsync(params, (billingResult2, skuDetailsList) ->

Sku ID正确

    private void setupIab()
    {
        billingClient = BillingClient.newBuilder(getApplicationContext()).enablePendingPurchases().setListener(this).build();
        billingClient.startConnection(new BillingClientStateListener()
        {
            @Override
            public void onBillingSetupFinished(BillingResult billingResult)
            {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK)
                {
                    List<String> skuList = new ArrayList<> ();
                    skuList.add("test_sku_1");
                    SkuDetailsParams params = SkuDetailsParams.newBuilder().setSkusList(skuList).setType(BillingClient.SkuType.INAPP).build();

                    billingClient.querySkuDetailsAsync(params, (billingResult2, skuDetailsList) ->
                    {
                        // Process the result.
                        if (billingResult2.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null)
                        {
                        }
                    });

                }
            }

            @Override
            public void onBillingServiceDisconnected()
            {
                // Try to restart the connection on the next request to
                // Google Play by calling the startConnection() method.
            }
        });
    }

最诚挚的问候

1 个答案:

答案 0 :(得分:0)

该代码对我来说似乎是正确的,并且与我使用的代码相似,但是我没有在querySkuDetailsAsync中调用onBillingSetupFinished,仅当用户购买东西时才调用它。

也许onBillingSetupFinished运行时,设置尚未真正完成,您可以尝试使用它,以便稍后使用:

 if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
        new Handler().post(() -> {
            List<String> skuList = new ArrayList<>();
            skuList.add("test_sku_1");
            SkuDetailsParams params = SkuDetailsParams.newBuilder().setSkusList(skuList).setType(BillingClient.SkuType.INAPP).build();

            billingClient.querySkuDetailsAsync(params, (billingResult2, skuDetailsList) ->
            {
                // Process the result.
                if (billingResult2.getResponseCode() == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
                }
            });
        });
    }