Ripristino dell'acquisto sottoscritto per abbonamenti auto-rinnovabili

Quando acquisto un abbonamento "Auto-Renewable" acquistato in precedenza nella mia app, è stato detto

You're currently subscribed to this... 

Quando ho fatto clic su OK, nel delegato della coda di pagamento ..

 - (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 anziché SKPaymentTransactionStateRestored , è normale?

Quindi come gestirlo correttamente?

Solutions Collecting From Web of "Ripristino dell'acquisto sottoscritto per abbonamenti auto-rinnovabili"

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 button "Ripristina acquisti" e call [[SKPaymentQueue defaultQueue] restoreCompletedTransactions] quando l'utente lo preme.

In realtà, non è ansible determinare se l'utente è già iscritto. Dovresti avere il button Iscriviti che i nuovi utenti usano per iscriversi e il button Ripristina per gli utenti già iscritti.

E quando ricevi SKPaymentTransactionStateFailed puoi mostrare un messaggio che suggerisce di usare il button Ripristina nel caso in cui l'utente sia già iscritto.