2012-01-27 9 views
5

Quando acquisto un acquistate in precedenza "Sottoscrizioni auto-rinnovabile" nella mia app, ha dettoRipristino acquisto sottoscritto per auto-rinnovabile sottoscrizioni

You're currently subscribed to this... 

Quando ho cliccato OK, nel delegato del pagamento coda ..

- (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; 
     } 
    } 
} 

Il transaction.transactionState restituito è SKPaymentTransactionStateFailed instea d di SKPaymentTransactionStateRestored, è normale?

Quindi, come gestirlo correttamente?

risposta

1

Ho lo stesso problema e non penso che ci sia un modo per distinguere questo evento da altri errori (restituisce il codice di errore SKErrorPaymentCancelled). Penso che l'unico modo per gestirlo sia avere un pulsante "Ripristina acquisti" e chiamare lo [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] quando l'utente lo preme.

3

In realtà, non è possibile determinare se l'utente è già iscritto. È necessario il pulsante Iscriviti che i nuovi utenti utilizzano per iscriversi e il pulsante Ripristina per gli utenti già iscritti.

E quando si ottiene SKPaymentTransactionStateFailed è possibile visualizzare un messaggio che suggerisce di utilizzare il pulsante Ripristina nel caso in cui l'utente sia già iscritto.

Problemi correlati