2015-02-26 5 views
5

Я реализую восстановление при покупке приложения. У меня есть кнопка, действие которойВосстановление InApp с использованием swift, iOS

@IBAction func restorePurchases(send : AnyObject){ 

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

Мой вопрос.

  1. Это правильный способ восстановления?
  2. Как мы можем подтвердить успешное действие для восстановления покупок?

ответ

23

не забудьте проверить, если вы можете сделать платеж:

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

для проверки, если восстановить было хорошо, вы должны следовать протоколу: SKPaymentTransactionObserver , а затем реализовать метод:

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

и подписаться на событие, выполнив:

SKPaymentQueue.default().addTransactionObserver(self) 

Наконец здесь является Exemple как проверить результат:

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 
    } 
    } 
} 
Смежные вопросы