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

iwa*_*bed 4 iphone uialertview in-app-purchase

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

是否有按下取消按钮时调用的委托方法?或者你的观点firstResponder再次成为问题?我在这里错过了什么?

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

替代文字http://i37.tinypic.com/1t4ead.png

小智 8

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

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

  [[SKPaymentQueue defaultQueue] addTransactionObserver:purchaseManager];
Run Code Online (Sandbox Code Playgroud)

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

- (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;

                           ...
}
Run Code Online (Sandbox Code Playgroud)

您可以使用此回调来关闭您的视图等...

  • 一旦你有一个失败的事务检查if(transaction.error.code == SKErrorPaymentCancelled)... (4认同)