質問

アプリ内課金フローを理解しようとして、次のコマンドを実行しました。 マーケットビリング サンプルはそのままで、重要なポイントにいくつかの Log.v() が追加されています。 BillingService.handleCommand():

public void handleCommand(Intent intent, int startId) {
    String action = intent.getAction();
    if (Consts.DEBUG) {
        Log.i(TAG, "handleCommand() action: " + action);
    }
    if (Consts.ACTION_CONFIRM_NOTIFICATION.equals(action)) {
        String[] notifyIds = intent.getStringArrayExtra(Consts.NOTIFICATION_ID);
        confirmNotifications(startId, notifyIds);
    } else if (Consts.ACTION_GET_PURCHASE_INFORMATION.equals(action)) {
        String notifyId = intent.getStringExtra(Consts.NOTIFICATION_ID);
        getPurchaseInformation(startId, new String[] { notifyId });
    } else if (Consts.ACTION_PURCHASE_STATE_CHANGED.equals(action)) {
        String signedData = intent.getStringExtra(Consts.INAPP_SIGNED_DATA);
        String signature = intent.getStringExtra(Consts.INAPP_SIGNATURE);
        purchaseStateChanged(startId, signedData, signature);
    } else if (Consts.ACTION_RESPONSE_CODE.equals(action)) {
        long requestId = intent.getLongExtra(Consts.INAPP_REQUEST_ID, -1);
        int responseCodeIndex = intent.getIntExtra(Consts.INAPP_RESPONSE_CODE,
                ResponseCode.RESULT_ERROR.ordinal());
        ResponseCode responseCode = ResponseCode.valueOf(responseCodeIndex);
        checkResponseCode(requestId, responseCode);
    }
}

私の問題 (?) は、実行されているすべてのアクションをログで確認できることですが、 ACTION_CONFIRM_NOTIFICATION トランザクションが成功したにもかかわらず、何らかの理由で表示されません。

これはなぜでしょうか?

私には何が欠けているのでしょうか?

役に立ちましたか?

解決

action_confirm_notificationはbillingreceiverで使用されることはなく、confirm_notificationをそもそもここで行うべきではないため、彼らがそれをhandlecommandで宣言する理由がわかりません

他のヒント

BillingReceiver は、マーケットから送信される IN_APP_NOTIFY メッセージを待っています。その後、サービスを通じて確認が開始されます。受信機は IN_APP_NOTIFY メッセージを受信しましたか?

私も同様の問題を抱えています。私のアプリケーションは Market アプリケーションから通知を返しません。したがって、実際にはアプリについて確認する必要はありません。ここでわかるように、これはすでに長い間知られている問題のようです。 http://code.google.com/p/marketbilling/issues/detail?id=14

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top