了解用户在应用内购买时何时按下了取消按钮

时间:2010-08-12 22:49:26

标签: iphone in-app-purchase uialertview

我正在为应用内购买编写代码,并使用带有活动指示符的“正在处理...”视图,以便在启动购买时阻止“立即购买”按钮。但是,如果用户点击“取消”按钮,您怎么知道这些警报视图来自AppStore.app?

当按下取消按钮时是否有一个委托方法被调用?或者您的观点再次成为firstResponder?我在这里缺少什么?

如果您认为不可能,请查看“我是T-Pain”应用程序......他们做了非常相似的事情,并在按下取消按钮后立即解除他们的观点。

alt text http://i37.tinypic.com/1t4ead.png

1 个答案:

答案 0 :(得分:8)

假设一切设置正确,您应该有一个实现 SKPaymentTransactionObserver 的对象,该对象将收到交易成功/失败/取消的回调。

在我的示例中,这是此调用中提到的 purchaseManager 对象

  [[SKPaymentQueue defaultQueue] addTransactionObserver:purchaseManager];

当用户取消付款时,您应收到一个交易状态为已取消的回调:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {

        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;

            case SKPaymentTransactionStateFailed:
                // THIS IS THE STATE YOU SHOULD SEE
                [self failedTransaction:transaction];
                break;

                           ...
}

您可以使用此回调来解除您的观点等...