Восстановление покупки InApp с помощью swift, iOS

я реализую восстановление в App purchase. У меня есть кнопка, действие которой

@IBAction func restorePurchases(send : AnyObject){

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

мой вопрос.

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

1 ответов


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

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

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

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

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

SKPaymentQueue.default().add(self)

наконец, вот пример того, как я проверяю результат:

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