簡體   English   中英

關於應用內購買:Android

[英]Regarding in-app purchase : Android

我在測驗應用程序中使用應用程序內購買來購買硬幣。我分別添加了2個硬幣類別100個硬幣和500個硬幣。我還添加了2個SKU。我的兩個硬幣購買都很好。雖然我購買了100個硬幣並消費了.100個硬幣被添加到應用程序中,但是當我再次購買500個硬幣時,添加了100個硬幣而不是500個。我真的需要一個幫助之手,因為我堅持了好幾個星期。以下是消耗應用程序的購買代碼

private void update() {
    ArrayList<String> moreSkus = new ArrayList<String>();
    moreSkus.add(SKU);
    moreSkus.add(SKU_500);

    buyHelper.queryInventoryAsync(true, moreSkus, new QueryInventoryFinishedListener() {
        @Override
        public void onQueryInventoryFinished(IabResult result, Inventory inv) {
            if(result.isSuccess()) {
               // SkuDetails details = inv.getSkuDetails(SKU);
                //String price = details.getPrice();

                //TextView tvPrice = (TextView)GameActivity.this.findViewById(R.id.textview_price);
               // tvPrice.setText(price);

                purchase = inv.getPurchase(SKU);
               // purchase = inv.getPurchase(SKU_500);
                purchase=inv.getPurchase(SKU_500);
                if(purchase!=null) {
                 //   buy100coins.setEnabled(false);
                    //coins_one_hundred.setVisibility(View.GONE);
                    // buy100coins.setVisibility(View.GONE);


                    buy100coins.setEnabled(false);
                    buy500coins.setEnabled(false);


                   //boughtcoins.setEnabled(true);
                   //boughtcoins.setVisibility(View.VISIBLE);
                    boughtcoins.setEnabled(true);

                } else {
                  //  buy100coins.setEnabled(true);
                    //coins_one_hundred.setVisibility(View.VISIBLE);
                    // buy100coins.setVisibility(View.VISIBLE);
                    buy100coins.setEnabled(true);
                    buy500coins.setEnabled(true);

                    //boughtcoins.setEnabled(false);
                    //boughtcoins.setVisibility(View.INVISIBLE);
                    boughtcoins.setEnabled(false);

                } 

                Toast.makeText(GameActivity.this, "Successful got inventory!", Toast.LENGTH_SHORT).show();

            } else {
                Toast.makeText(GameActivity.this, "Error getting inventory!", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

和按鈕消費

               boughtcoins = (Button) buycoinsdialog.findViewById(R.id.bought_coins);
                        //boughtcoins.setVisibility(View.GONE);
                        // if button is clicked, close the custom dialog
                        boughtcoins.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Helper.playSound(getApplicationContext(), "click");
                                buyHelper.consumeAsync(purchase, new OnConsumeFinishedListener() {

                                    @Override
                                    public void onConsumeFinished(Purchase purchase, IabResult result) {
                                        if(result.isSuccess()) {
                                            Toast.makeText(GameActivity.this, "Coins consumed!", Toast.LENGTH_SHORT).show();
                                            Helper.playSound(getApplicationContext(), "cash");                                      
                                                money += 100;
                                               money_text.setText( "$" + money);

                                            try {
                                                // Small HACK: Give the system some time to realize the consume... without the sleep here,
                                                // you have to press "Update" to see that the item can be bought again... 
                                                Thread.sleep(600);
                                                update();
                                            } catch(Exception e) {
                                                // ignored
                                            }

                                        } else {
                                            Toast.makeText(GameActivity.this, "Error consuming: "+result.getMessage(), Toast.LENGTH_SHORT).show();
                                        }
                                    }
                                });


                                buycoinsdialog.dismiss();


                            }
                        });

看起來無論用戶選擇什么,都可以按照此行將錢/硬幣數增加100:

money += 100;

您在哪里處理500枚硬幣的購買?

您必須執行以下操作

 if(purchase.getSKU() == SKU_500){
money += 500;
}else if(purchase.getSKU() == SKU_100){
money += 100;
}
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener2 
    = new IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult result, 
                   Purchase purchase) 
    {
       if (result.isFailure()) {
          // Handle error
          return;
     }else {
if (purchase.getSku().equals(ITEM_SKU1)) {
                 // do things
    }else if(purchase.getSku().equals(ITEM_SKU2){}
}

  }
};

檢查這可能對您有幫助

//在點擊按鈕時調用此方法

 if (mHelper!=null) mHelper.flagEndAsync();
                    mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001,
                            mPurchaseFinishedListener, "");
                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(), "Please try after a few seconds"+e, Toast.LENGTH_SHORT).show();

按照以下方式實現偵聽器:

 IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
        = new IabHelper.OnIabPurchaseFinishedListener() {
        public void onIabPurchaseFinished(IabResult result, 
                        Purchase purchase) 
        {
           if (result.isFailure()) {
              // Handle error
              return;
         }      
         else{

    mHelper.consumeAsync(purchase, mConsumeFinishedListener);
        }

       }
    };

//實現“ mConsumeFinishedListener”的偵聽器,如下所示:

 IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
        new IabHelper.OnConsumeFinishedListener()
        {
             public void onConsumeFinished(Purchase purchase, 
                   IabResult result) 
             {

                if (result.isSuccess()) 
                {                
                      if(purchase.getSKU().equals("android.test.purchase")){
}else if(purchase.getSKU().equals("android.test.cancel")){
}


                } 
            }
        };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM