1

アプリ内機能のサンプル コードには次のものがあります。

onPurchaseStateChange(PurchaseState purchaseState, String itemId,
            int quantity, long purchaseTime, String developerPayload)

また、行われたアプリ内購入に関する情報 (ID、金額など) をもたらします。

ここでコードを更新できますが、請求サービスからのこのコールバック メソッドで応答がありません。サンプル アプリケーションの問題点。誰でも助けることができますか?

前もって感謝します。

4

1 に答える 1

2

何が問題なのか、@overrided onPurchaseStateChangeまたリクエストしているアクティビティで が呼び出されないことがあるのはなぜなのかわかりませんがonPurchaseStateChangeBillingReceiverBillingServiceで常に呼び出されることを確認できます。

何らかの理由で、コールバックが呼び出し元のアクティビティに到達しないことがあります。

ちなみに、この問題は管理対象製品またはサブスクリプションを購入した場合にのみ発生するようです。管理対象外の商品を購入すると、必ずコールバックが届きます。

解決策は次のとおりです (サンプル アプリケーションの購入アクティビティのリクエスト - ダンジョン アクティビティ):

@Override
        public void onPurchaseStateChange(PurchaseState purchaseState, String itemId, int quantity, long purchaseTime, String developerPayload) {

            if (purchaseState == PurchaseState.PURCHASED) {

                onPurchaseStateChange = true;

                // Do whatever you need to do after purchase here first.

            }
        }

        @Override
        public void onRequestPurchaseResponse(RequestPurchase request, ResponseCode responseCode) {


            if (responseCode == ResponseCode.RESULT_OK) {

                if (!onPurchaseStateChange) {
                    // If onPurchaseStateChange = false, the onPurchaseStateChange callback didn't arrive from the BillingService, so you can perform your after purchase actions here.
                }

            } else if (responseCode == ResponseCode.RESULT_USER_CANCELED) {

            } else {

            }
        }

解決策 2 (正しい解決策のようです): Google のサンプル コードには、次のメソッドが含まれています。

@Override
    protected void onStop() {
        super.onStop();

        ResponseHandler.unregister(YOUR_PURCHASE_OBSERVER);
    }

これにより、Play ストアの購入アクティビティを開いた瞬間にオブザーバーが登録解除されます。アクティビティに戻ると (購入後または [戻る] ボタンのいずれか)、onStartが呼び出されて が再起動されますpurchaseObserverが、常に購入情報が含まれているとは限りません。これにより、onPurchaseStateChangeが呼び出されることはありません。

解決策は、onStop から unregister を削除し、onDestroy に移動することです。別の解決策は、それをそのままにして、以前に受信した詳細を保持するキューから開始することです。こちらをご覧ください: Android アプリ内課金. ResponseHandler の登録を解除するのはいつですか?

于 2012-10-18T06:17:34.870 に答える