4

我认为已正确遵循文档中的所有步骤,但我无法到达 querySkuDetailsAsync 的回调,没有报告错误。该应用程序与 IAB 一起正常工作,现在我只是从旧库迁移到新的 'com.android.billingclient:billing:2.0.3' 但有很多问题。另一个问题,在新库中也有必要使用 Play Console 中的 License Key 吗?我在新库中找不到有关使用它的文档。

我可以正确无误地到达这条线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.
            }
        });
    }

此致

4

1 回答 1

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) {
                }
            });
        });
    }
于 2019-11-30T12:40:46.453 回答