Android inventory.getSkuDetails()返回null

Luk*_*ley 23 android in-app-purchase in-app-billing

嗨我正在尝试将应用程序购买添加到我的应用程序我已经在开发者控制台上设置我的应用内购买设置为活动我然后询问他们昨天工作完美我检索了所有细节但今天它回来了为null.唯一改变的是我必须卸载应用程序并重新运行它.我已经在应用程序和开发者控制台上检查了我的skus,它与我运行IabHelper启动设置完全匹配时得到了ok的结果.然后我调用IabHelper.QueryInventoryFinishedListener并返回结果为好,但是当我尝试访问库存中的任何内容时它返回为null.有谁知道为什么?或者如果我在我的代码中做错了什么?

在我的Create();

mHelper = new IabHelper(this, base64EncodedPublicKey);
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
               public void onIabSetupFinished(IabResult result) {
                  if (!result.isSuccess()) {
                     // Oh noes, there was a problem.
                     Log.v("Menu", "Problem setting up In-app Billing: " + result);
                  }            
                     // Hooray, IAB is fully set up!  
                  Log.v("Menu", "INAPP BILLING SETUP COMPLETE: " + result);
                  ArrayList<String> skuList = new ArrayList<String> ();
                    skuList.add("myapp.consumable.inapppurchase_id_1");
                    skuList.add("myapp.consumable.inapppurchase_id_2");
                    skuList.add("myapp.consumable.inapppurchase_id_3");
                    skuList.add("myapp.permanant.inapppurchase_id_6");
                    skuArray = new JSONArray(skuList);

                    mHelper.queryInventoryAsync(true, skuList, mQueryFinishedListener);

               }
        });
Run Code Online (Sandbox Code Playgroud)

然后我继承我的QueryListener代码

IabHelper.QueryInventoryFinishedListener mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
       public void onQueryInventoryFinished(IabResult result, Inventory inventory)   
       {
          if (result.isFailure()) {
              Log.v("Menu", "RESULT FALIURE");
             return;
           }

      Log.v("Menu", "this +" + skuArray);
      Log.v("Menu", "Inventory +" + inventory);
      for(int i = 0; i < skuArray.length(); i++){
          try {
             String SKU = skuArray.getString(i);

             if(inventory.getSkuDetails(SKU) != null){
                 Log.v("Menu", "SKU = " + SKU);
                 Log.v("Menu", "SKU" + SKU + "= " + inventory.getSkuDetails(SKU));

                 updateProductData("price",inventory.getSkuDetails(SKU).getPrice(),i);
                 updateProductData("id",inventory.getSkuDetails(SKU).getSku(),i);


             }else{
                 Log.v("Menu", "SKU RETURNED NULL" + SKU); 
             }



        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


      }

   }
}; 
Run Code Online (Sandbox Code Playgroud)

Luk*_*ley 26

好的,我跟谷歌谈过这个问题.并且他们说他们已经进行了更改,需要在添加应用程序购买之前发布apk,他们建议将apk上传到alpha测试频道并发布(不是草稿模式).

如果它有效,我会尝试并反馈

  • @LukeBatley所以我需要发布真实的应用程序?在应用程序处于测试阶段且未发布时,无法测试应用内结算?在开发者控制台中,我的beta应用程序仍然说它是草稿?!? (3认同)