【问题标题】:querySkuDetailsAsync callback never calledquerySkuDetailsAsync 回调从未被调用
【发布时间】:2019-11-29 19:57:22
【问题描述】:

我认为已正确遵循文档中的所有步骤,但我无法到达 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.
            }
        });
    }

最好的问候

【问题讨论】:

  • 需要登录querySkuDetailsAsync
  • @GMG:你是如何解决这个问题的?我现在正在尝试从 v2 更新到 v3,我遇到了完全相同的问题。我可以连接到计费服务;但是,永远不会调用 querySkuDetailsAsync 回调。我也没有收到任何错误。

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


【解决方案1】:

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

可能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) {
                }
            });
        });
    }

【讨论】:

  • 刚刚在众多测试之一中完成,但什么也没有,回调永远不会被调用
  • 所以我认为您的问题可能与代码无关,而与 Google Play Console 上的设置有关。您至少上传了一个发布版 APK 吗?
  • 您在测试设备上是否有多个 Google 帐户?
猜你喜欢
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
相关资源
最近更新 更多