2012-01-27 83 views
5

当我购买我的应用程序以前购买的“自动再生订阅”,它说恢复订阅购买了自动再生订阅

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 instea d的SKPaymentTransactionStateRestored,这是正常的吗?

那么我该如何正确处理?

回答

1

我有同样的问题,我不认为有任何方法可以区分此事件与其他错误(它返回错误代码SKErrorPaymentCancelled)。我认为唯一可以处理的方法是使用“恢复购买”按钮,并在用户按下时拨打[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

3

实际上,您无法确定用户是否已订阅。你应该有订阅按钮,新用户用于订阅,和恢复按钮已订阅的用户。

而当您获得SKPaymentTransactionStateFailed时,您可以显示一条消息,建议使用还原按钮以防止用户已订阅。