0

アプリ内購入のテスト アプリを作成して、作成したアプリケーションに実装する方法を学びました。Google が提供する TrivialDrive サンプルのコードを改変しました。しかし、友人が支払いを行った後、アプリがクラッシュします。コードは次のようになります

public class MainActivity extends Activity {



    String TAG = "AppPurchaseTest";
    IabHelper mHelper;
    boolean mIsPremium = false;
    static final String SKU_PREMIUM = "premium";
    static final int RC_REQUEST = 10001;


 // User clicked the "Upgrade to Premium" button.
    public void onUpgradeAppButtonClicked(View arg0) {
        Log.d(TAG, "Upgrade button clicked; launching purchase flow for upgrade.");
   //     setWaitScreen(true);
        mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener);
    }


    //this is not working

 // Callback for when a purchase is finished
    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
        public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
            Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);

            int duration = Toast.LENGTH_SHORT;
            if (result.isFailure()) {
                // Oh noes!
             //   complain("Error purchasing: " + result);
             //   setWaitScreen(false);
                Toast.makeText(getBaseContext(), "Fail :(", duration).show();
                return;
            }

            Log.d(TAG, "Purchase successful.");

            if (purchase.getSku().equals(SKU_PREMIUM)) {
                // bought the premium upgrade!
                Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
              //  alert("Thank you for upgrading to premium!");
                mIsPremium = true;

                Toast.makeText(getBaseContext(), "Successo: adesso sei premium", duration).show();
                Button test = (Button) findViewById(R.id.test);
                test.setVisibility(View.INVISIBLE);
              //  updateUi();
             //   setWaitScreen(false);
            }
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String base64EncodedPublicKey = null;

        // compute your public key and store it in base64EncodedPublicKey
        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.d(TAG, "Problem setting up In-app Billing: " + result);
               }            
                  // Hooray, IAB is fully set up!  
            }
         });
    }


    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();

        if (mHelper != null) {
            Log.d(TAG, "mHelper doesn't = null ");
        mHelper.dispose();
        mHelper = null;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);

        // Pass on the activity result to the helper for handling
        if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
            // not handled, so handle it ourselves (here's where you'd
            // perform any handling of activity results not related to in-app
            // billing...
            super.onActivityResult(requestCode, resultCode, data);
        }
        else {
            Log.d(TAG, "onActivityResult handled by IABUtil.");
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


}

何か間違っていることがわかりますか?忘れ物?

また、このチュートリアルhttps://developer.android.com/google/play/billing/billing_integrate.html ははるかにシンプルに見えますが、実装方法がわかりません。実装?プレミアム購入への簡単なアップグレードが必要なだけです

個人的にテストすることはできず、テストするたびにお金を失うので、それを機能させるのは非常に困難です:(

4

2 に答える 2