0

アプリの購入で使用しようとしていますが、アイテムを購入した後、「 IabHelper.OnConsumeFinishedListener mConsumeFinishedListener 」の結果に次のエラーが表示されます my Item is not a subscription !

result.getmessage は次のとおりです。

何をすればよいでしょうか ?

私の完全なコード:

public class BuyCoins extends Activity{

String TAG="TESTPURCHASE";
IabHelper mHelper;
static final String ITEM_100_SKU = "ir.e_rundev.brainwars.test";
static final String ITEM_500_SKU = "ir.e_rundev.brainwars.test2";
static final String ITEM_1000_SKU = "ir.e_rundev.brainwars.1000coins";
String ITEM_SKU="";





protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.buy_coins);

    Swarm.setActive(this);



    String base64EncodedPublicKey =
            "(I HAVE MY CODE HERE)";

    mHelper = new IabHelper(this, base64EncodedPublicKey);

    mHelper.startSetup(new
                               IabHelper.OnIabSetupFinishedListener() {
                                   public void onIabSetupFinished(IabResult result)
                                   {
                                       if (!result.isSuccess()) {
                                       //    Log.d(TAG, "In-app Billing setup failed: " +
                                                 //  result);
                                       } else {
                                        //   Log.d(TAG, "In-app Billing is set up OK");
                                       }
                                   }
                               });

    Button btn100 = (Button) findViewById(R.id.btn_Buy_100);
    Button btn500 = (Button) findViewById(R.id.btn_Buy_500);
    Button btn1000 = (Button) findViewById(R.id.btn_Buy_1000);

    btn100.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ITEM_SKU=ITEM_100_SKU;
            buyCoin(view);
        }
    });

    btn500.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ITEM_SKU=ITEM_500_SKU;
            buyCoin(view);
        }
    });

    btn1000.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           // ITEM_SKU=ITEM_1000_SKU;
           // buyCoin(view);

        }
    });


}

public void buyCoin (View view) {
    mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001,
            mPurchaseFinishedListener, "mypurchasetoken");
}

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent data)
{
    if (!mHelper.handleActivityResult(requestCode,
            resultCode, data)) {
        super.onActivityResult(requestCode, resultCode, data);
    }
}


IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
        = new IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult result,
                                      Purchase purchase)

    {
        if (result.isFailure()) {
            // Handle error
            return;
        } else if (purchase.getSku().equals(ITEM_100_SKU)) {
            consumeItem();
            Log.d(TAG, "Here"+purchase.getItemType());

        } else if (purchase.getSku().equals(ITEM_500_SKU)) {

            consumeItem();


        } else if (purchase.getSku().equals(ITEM_1000_SKU)) {
            consumeItem();


        }

    }



    public void consumeItem() {
        mHelper.queryInventoryAsync(mReceivedInventoryListener);
        Log.d(TAG,"here 3");
    }

    IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
            = new IabHelper.QueryInventoryFinishedListener() {
        public void onQueryInventoryFinished(IabResult result,
                                             Inventory inventory) {

            if (result.isFailure()) {
                // Handle failure
            } else {
                mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU),
                        mConsumeFinishedListener);
                Log.d(TAG,"here 4"+inventory.getPurchase(ITEM_SKU).getItemType());
            }
        }
    };

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

                    if (result.isSuccess()) {
                        //clickButton.setEnabled(true);

                        //  Log.d(TAG,"SUCCESSFUL");
                        purchaseFinished(ITEM_SKU);
                        Log.d(TAG,"here2");

                        SharedPreferences settings = getSharedPreferences("MYSETTINGS", 0);
                        SharedPreferences.Editor editor = settings.edit();
                        editor.putBoolean("isPremium", true);
                        editor.apply();

                        Adad.setDisabled(true);


                    } else {
                        // handle error
                        Log.d(TAG,"here 5");
                        Log.d(TAG,result.getMessage());
                        Log.d(TAG,purchase.toString());
                    }
                }
            };
};

@Override
public void onDestroy() {
    super.onDestroy();
    if (mHelper != null) {
        mHelper.dispose();

        mHelper = null;
    }
}


public void onResume() {
    super.onResume();
    Swarm.setActive(this);
    TextView tvCoins = (TextView) findViewById(R.id.tv_Buy_Coins);
    GameInventory gameInventory = new GameInventory(getApplicationContext());
    tvCoins.setText(String.valueOf(gameInventory.getCoinsCount()));
}

public void onPause() {
    super.onPause();
    Swarm.setInactive(this);
}


private void purchaseFinished(String SKU){
    GameInventory gameInventory = new GameInventory(getApplicationContext());

    if (SKU==ITEM_100_SKU) {

        gameInventory.updateCoinsCount(gameInventory.getCoinsCount() + 100);
    }else if(SKU==ITEM_500_SKU){
        gameInventory.updateCoinsCount(gameInventory.getCoinsCount() + 520);
    }else if (SKU==ITEM_1000_SKU){
        gameInventory.updateCoinsCount(gameInventory.getCoinsCount() + 1100);
    }
    ITEM_SKU = "";
}

}

4

1 に答える 1

2

こんにちは、10 日からアプリ内購入にも取り組んでおり、既存のアプリとの統合に成功し、ライブにする準備ができています。最初にこれを始めたとき、ここから「Trivial Drive」と呼ばれるGoogle InApp Billing Exampleをダウンロードしました。

しかし、多くの問題やバグがあるため、あまり役に立ちませんでした。そこで、ここで見つけることができる新しい v3 API を使用して、自分でゼロから行うことにしました。このチュートリアルには明確な説明があり、時間があれば、Google の従業員が統合方法を明確に説明したこのyoutube ビデオを参照してください。

また、簡単な例が必要な場合は、ここからダウンロードできるサンプル アプリを用意しています。

次のビデオでは、InApp Purchase を統合する方法についても説明しています。通り抜けてください。

https://www.youtube.com/watch?v=-h2ESH71hAI

ありがとうございました

于 2014-10-13T12:58:50.270 に答える