Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 正在尝试查询应用内计费产品,但运气不佳,在草稿模式下是否可以查询应用内计费产品?_Android_In App Billing - Fatal编程技术网

Android 正在尝试查询应用内计费产品,但运气不佳,在草稿模式下是否可以查询应用内计费产品?

Android 正在尝试查询应用内计费产品,但运气不佳,在草稿模式下是否可以查询应用内计费产品?,android,in-app-billing,Android,In App Billing,我知道截至2015年5月,谷歌改变了他们在草稿模式下处理你的应用程序的方式- 在少数情况下,您可以使用未发布的应用程序测试Google Play功能。例如,您可以通过使用静态响应测试未发布应用程序的应用内计费支持,这些响应是一种特殊的保留产品ID,总是返回特定的结果,如购买或退款 我的问题是,您能否在草稿模式下对产品使用IabHelper.queryInventoryAsync。我知道购买时必须使用保留的产品id,但查询呢?这个问题源于这样一个事实:当我从我的监听器获取清单时,我返回null

我知道截至2015年5月,谷歌改变了他们在草稿模式下处理你的应用程序的方式-

在少数情况下,您可以使用未发布的应用程序测试Google Play功能。例如,您可以通过使用静态响应测试未发布应用程序的应用内计费支持,这些响应是一种特殊的保留产品ID,总是返回特定的结果,如购买或退款

我的问题是,您能否在草稿模式下对产品使用IabHelper.queryInventoryAsync。我知道购买时必须使用保留的产品id,但查询呢?这个问题源于这样一个事实:当我从我的监听器获取清单时,我返回null

        final String SKU_VERBAL_HINT = "verbal_00.thisthat";
            // compute your public key and store it in base64EncodedPublicKey
    mHelper = new IabHelper(this, base64EncodedPublicKey);

    // enable debug logging (for a production application, you should set this to false).
    mHelper.enableDebugLogging(true);

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                // Oh noes, there was a problem.
                Log.d("Issue", "Problem setting up In-app Billing: " + result);
            }else{
                //List<String> additionalSkuList = new ArrayList<String>();
                //additionalSkuList.add(SKU_VERBAL_HINT);
                String[] moreSkus = {SKU_VERBAL_HINT};
                mHelper.queryInventoryAsync(true, Arrays.asList(moreSkus),
                        mQueryFinishedListener);
                Log.d("Issue", "No Problem setting up in-app billing " + result);
            }
        }
    });

            mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
        public void onQueryInventoryFinished(IabResult result, Inventory inventory)
        {
            if (result.isFailure()) {
                // handle error
                return;
            }

         **-------->FAILS HERE, null inventory**  String verbalPrice =
                    inventory.getSkuDetails(SKU_VERBAL_HINT).getPrice();
            String verbal2 = verbalPrice;
            // update the UI
        }
    };

看看这个答案。不支持草稿应用程序

BlockquoteDraft应用不再受支持 以前,您可以发布应用程序的草稿版本进行测试。不再支持此功能。相反,有两种方法可以测试预发布应用程序在Google Play store上的功能:

您可以将应用发布到alpha或beta发行渠道。这使得该应用程序可以在Google Play商店中使用,但仅适用于您列入白名单的测试人员。 在少数情况下,您可以使用未发布的应用程序测试Google Play功能。例如,您可以通过使用静态响应测试未发布应用程序的应用内计费支持,这些响应是一种特殊的保留产品ID,总是返回特定的结果,如购买或退款

大宗报价

从这个角度来看,应用程序似乎必须发布到alpha或beta频道才能进行测试。

@Heureux您发布的developer.android链接的最后一段说,如果在应用内计费中使用静态响应,您可以不发布就进行测试,这就是我正在做的。堆栈溢出链接在某种程度上是正确的。仅当您正在进行非静态购买时,才需要发布它。您不需要在应用程序的产品列表中列出保留的产品。Google Play已经知道保留的产品ID。此外,您不需要将应用程序上载到开发人员控制台来使用保留的产品ID执行静态响应测试。您只需在设备上安装应用程序,登录设备,并使用保留的产品ID发出计费请求。这让我觉得如果不发布,什么都不会被查询。我从阅读文档中了解到,你必须上传一个签名的APK文件,这样你才能进行应用内计费测试。那么,当你说上传你的应用程序时,你指的是一个签名的APK文件吗?您还看到过使用这些保留产品ID的代码吗?我想象它看起来像这样-mHelper.launchPurchaseFlowthis,android.test.purchase,RC_请求,mppurchaseFinishedListener,有效负载;以android.test.purchase作为保留的产品ID