恢复自动续订订阅的订阅购买

时间:2012-01-27 14:53:48

标签: iphone objective-c ios xcode

当我在我的应用中购买以前购买的“自动续订订阅”时,它说

You're currently subscribed to this...

当我点击付款队列的代表中的确定时。

- (void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction * transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                [self failedTransaction:transaction]; // Why this is called?
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
            default:
                break;
        }
    }
}

返回的 transaction.transactionState SKPaymentTransactionStateFailed 而不是 SKPaymentTransactionStateRestored ,这是正常的吗?

那我该如何正确处理呢?

2 个答案:

答案 0 :(得分:3)

实际上,您无法确定用户是否已订阅。您应该拥有新用户用于订阅的订阅按钮,以及已订阅用户的还原按钮。

当您获得SKPaymentTransactionStateFailed时,如果用户已订阅,您可以显示建议使用还原按钮的消息。

答案 1 :(得分:2)

我有同样的问题,我认为没有办法将此事件与其他错误区分开来(它会返回错误代码SKErrorPaymentCancelled)。我认为你可以处理它的唯一方法是通过“恢复购买”按钮,并在用户按下时调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]