2015-02-26 22 views
5

Sto implementando il ripristino nell'acquisto di app. Ho un pulsante la cui azione èRipristina l'acquisto InApp utilizzando swift, iOS

@IBAction func restorePurchases(send : AnyObject){ 

SKPaymentQueue.defaultQueue().restoreCompletedTransactions() 
// if (success) { 
// I want to do something here  
// } 
} 

La mia domanda è.

  1. È questo il modo giusto per ripristinare?
  2. Come possiamo verificare l'azione di successo per il ripristino degli acquisti?

risposta

23

non dimenticate di verificare se è possibile effettuare un pagamento:

if (SKPaymentQueue.canMakePayments()) { 
    SKPaymentQueue.default().restoreCompletedTransactions() 
} 

per controllo se il ripristino è stato buono si deve seguire il protocollo: SKPaymentTransactionObserver e quindi implementare il metodo:

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) 

e sottoscrivere l'evento effettuando:

SKPaymentQueue.default().addTransactionObserver(self) 

Infine qui è un esempio di come si controlla il risultato:

func paymentQueue(_ queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) { 
    print("Received Payment Transaction Response from Apple"); 
    for transaction in transactions { 
    switch transaction.transactionState { 
    case .purchased, .restored: 
     print("Purchased purchase/restored") 
     SKPaymentQueue.default().finishTransaction(transaction as SKPaymentTransaction) 
     break 
    case .failed: 
     print("Purchased Failed") 
     SKPaymentQueue.default().finishTransaction(transaction as SKPaymentTransaction) 
     break 
    default: 
     print("default") 
     break 
    } 
    } 
}