Android querySkuDetailsAsync回调从未调用

Android querySkuDetailsAsync回调从未调用,android,in-app-purchase,in-app-billing,google-play-developer-api,play-billing-library,Android,In App Purchase,In App Billing,Google Play Developer Api,Play Billing Library,我认为已经正确地遵循了文档中的所有步骤,但是我无法访问querySkuDetailsAsync的回调,没有报告错误。该应用程序与IAB正常工作,现在我只从旧库迁移到新的“com.android.billingclient:billing:2.0.3”,但存在许多问题。 另一个问题,在新的库中是否还需要使用来自Play Console的许可证密钥?我在新图书馆里找不到关于使用它的文档 我可以正确无误地到达此行billingClient.queryskuedetailsasync(params,(b

我认为已经正确地遵循了文档中的所有步骤,但是我无法访问querySkuDetailsAsync的回调,没有报告错误。该应用程序与IAB正常工作,现在我只从旧库迁移到新的“com.android.billingclient:billing:2.0.3”,但存在许多问题。 另一个问题,在新的库中是否还需要使用来自Play Console的许可证密钥?我在新图书馆里找不到关于使用它的文档

我可以正确无误地到达此行
billingClient.queryskuedetailsasync(params,(billingsult2,skuedetailslist)->

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.
            }
        });
    }
private void setupIab()
{
billingClient=billingClient.newBuilder(getApplicationContext()).enablePendingPurchases().setListener(this.build();
startConnection(新的BillingClientStateListener())
{
@凌驾
BillingSetupFinished(BillingResult BillingResult)上的公共无效
{
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK)
{
List skuList=newarraylist();
skuList.添加(“测试sku 1”);
SkuDetailsParams params=SkuDetailsParams.newBuilder().setskulist(skuList).setType(BillingClient.SkuType.INAPP).build();
billingClient.querySkuDetailsAsync(参数,(billingResult2,skuDetailsList)->
{
//处理结果。
if(billingResult2.getResponseCode()==BillingClient.BillingResponseCode.OK&&skuDetailsList!=null)
{
}
});
}
}
@凌驾
公共无效onBillingServiceDisconnected()
{
//尝试在下一次请求时重新启动连接以
//Google通过调用startConnection()方法播放。
}
});
}

致以最诚挚的问候

代码对我来说似乎是正确的,与我使用的代码类似,但我不在
onBillingSetupFinished
中调用
queryskuedetailsasync
,我只在用户购买东西时才调用它

可能当运行
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) {
                }
            });
        });
    }
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK){
新处理程序().post(()->{
List skuList=new ArrayList();
skuList.添加(“测试sku 1”);
SkuDetailsParams params=SkuDetailsParams.newBuilder().setskulist(skuList).setType(BillingClient.SkuType.INAPP).build();
billingClient.querySkuDetailsAsync(参数,(billingResult2,skuDetailsList)->
{
//处理结果。
if(billingResult2.getResponseCode()==BillingClient.BillingResponseCode.OK&&skuDetailsList!=null){
}
});
});
}

我的代码似乎是正确的,与我使用的代码类似,但我不会在
onBillingSetupFinished
中调用
queryskuedetailsasync
,我只在用户购买东西时才调用它

可能当运行
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) {
                }
            });
        });
    }
if(billingResult.getResponseCode()==BillingClient.BillingResponseCode.OK){
新处理程序().post(()->{
List skuList=new ArrayList();
skuList.添加(“测试sku 1”);
SkuDetailsParams params=SkuDetailsParams.newBuilder().setskulist(skuList).setType(BillingClient.SkuType.INAPP).build();
billingClient.querySkuDetailsAsync(参数,(billingResult2,skuDetailsList)->
{
//处理结果。
if(billingResult2.getResponseCode()==BillingClient.BillingResponseCode.OK&&skuDetailsList!=null){
}
});
});
}

需要登录QuerysKudetailsAsync需要登录QuerysKudetailsAsync必须在众多测试中的一个测试中完成,但是什么都没有,从来不会调用回调。因此我认为您的问题可能与代码无关,而与Google Play控制台上的设置有关。您是否至少上传了发布APK?您在testi上有多个Google帐户吗ng设备?只是在众多测试中的一个测试中完成了,但是什么都没有,从来没有调用回调。因此我认为您的问题可能与代码无关,而是与Google Play控制台上的设置有关。您是否至少上传了一个发布APK?您在测试设备上是否有多个Google帐户?