当我在我的应用中购买以前购买的“自动续订订阅”时,它说
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 ,这是正常的吗?
那我该如何正确处理呢?
答案 0 :(得分:3)
实际上,您无法确定用户是否已订阅。您应该拥有新用户用于订阅的订阅按钮,以及已订阅用户的还原按钮。
当您获得SKPaymentTransactionStateFailed
时,如果用户已订阅,您可以显示建议使用还原按钮的消息。
答案 1 :(得分:2)
我有同样的问题,我认为没有办法将此事件与其他错误区分开来(它会返回错误代码SKErrorPaymentCancelled
)。我认为你可以处理它的唯一方法是通过“恢复购买”按钮,并在用户按下时调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
。