勉強も兼ねて、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)) {
月額課金かどうかのチェックを入れると、うまくいきました。
すっきり!!