在我尝试了解应用内结算流程时,我按原样运行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
由于某种原因从未显示,尽管交易成功。
知道为什么会这样吗?
我错过了什么?
答案 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