ACTION_CONFIRM_NOTIFICATION永远不会发生 - 为什么?

时间:2012-01-11 16:23:08

标签: android in-app-billing

在我尝试了解应用内结算流程时,我按原样运行market_billing示例,并在关键点加上一些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由于某种原因从未显示,尽管交易成功。

知道为什么会这样吗?

我错过了什么?

2 个答案:

答案 0 :(得分:1)

ACTION_CONFIRM_NOTIFICATION从未在BillingReceiver中使用,我不知道为什么他们在handleCommand中声明它,因为CONFIRM_NOTIFICATION不应该首先在这里完成

答案 1 :(得分:1)

BillingReceiver正在等待市场发送的IN_APP_NOTIFY消息。然后它将通过服务开始确认。您的接收方是否收到IN_APP_NOTIFY消息?

我也有类似的问题。我的应用程序永远不会从Market应用程序中获取通知。所以实际上没有什么可以确认您的应用程序。 好像很长一段时间已经是一个已知问题,你可以在这里看到:http://code.google.com/p/marketbilling/issues/detail?id=14