勉強も兼ねて、In App Billing V2の月額課金機能を「ブラックバスを飼おう」に組み込んでいる最中です。
(メニューに突然、「愛の募金」という謎の項目が追加されて、ドン引きした方もいるかと思います。)
ところがアプリ内サービスの購入画面に遷移する際、以下のエラーが。
ただ、このダイアログを閉じると、ちゃんと購入画面に飛びます。
また、定期購入の方はこのエラーがでません。
画面遷移的には問題無いような気もしますが、とても気持ちが悪いため、ちょっと調べてみると、購入画面に飛ぶ際にrequestPurchase()を2度呼んでることが分かりました。Dungeons.javaのonClick()の判定文がまずいようです。
/** * Called when a button is pressed. */ @Override public void onClick(View v) { if (v == mBuyButton) { if (Consts.DEBUG) { Log.d(TAG, "buying: " + mItemName + " sku: " + mSku); } if (mManagedType != Managed.SUBSCRIPTION && !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_INAPP, mPayloadContents)) { showDialog(DIALOG_BILLING_NOT_SUPPORTED_ID); } else if (!mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_SUBSCRIPTION, mPayloadContents)) { // Note: mManagedType == Managed.SUBSCRIPTION showDialog(DIALOG_SUBSCRIPTIONS_NOT_SUPPORTED_ID); } } else if (v == mEditPayloadButton) { showPayloadEditDialog(); } else if (v == mEditSubscriptionsButton) { editSubscriptions(); } }
この行に、
} else if (mManagedType == Managed.SUBSCRIPTION && !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_SUBSCRIPTION, mPayloadContents)) {
月額課金かどうかのチェックを入れると、うまくいきました。
すっきり!!
すっきりしました!ありがたや。