正在恢复In App购买时,不会调用SKPaymentTransactionStateRestored

时间:2011-07-24 12:22:54

标签: objective-c in-app-purchase restore

在我的In App购买中,在恢复购买时不会调用case SKPaymentTransactionStateRestored:方法,而是调用case SKPaymentTransactionStatePurchased:,但是当购买时,希望向用户显示不同的信息恢复。

4 个答案:

答案 0 :(得分:3)

[queue restoreCompletedTransactions]将触发SKPaymentTransactionStateRestored状态,其中队列为SKPaymentQueue。您不应期望在用户确认交易后调用此方法。相反,如果用户已经购买了产品,则会被设备警告。

答案 1 :(得分:0)

我有一个线索。当我创建SKProductRequest并开始加载它时,方法(paymentqueue:updatedTransactions :)和特别是SKPaymentTransactionStateRestored:状态被调用。

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithArray: productIdentifiers]];
        request.delegate = self; 
        [request start];

我将看看苹果解决方案,看看,如果我能找到任何差异。

答案 2 :(得分:0)

您可以实施paymentQueueRestoreCompletedTransactionsFinished:以确定还原是否已完成:

http://developer.apple.com/library/ios/#documentation/StoreKit/Reference/SKPaymentTransactionObserver_Protocol/Reference/Reference.html

答案 3 :(得分:0)

如果它还没有解决,你可以用逻辑技巧来做。当恢复被触发时,请使用布尔标志(或枚举状态,如果您愿意)记住它,并在触发SKPaymentTransactionStatePurchased时显示不同的消息。您可以实现两个委托方法

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

找出恢复完成的时间。在这种情况下保存,您可能不会让用户进行任何购买,而还原正在进行中。您可以向用户显示类似this的内容,以便用户看到当前正在发生的事情。

这就是我所做的,它对我有用。