2012-01-27 84 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時,您可以顯示一條消息,建議使用還原按鈕以防止用戶已訂閱。