Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Restore InApp purchase using swift, iOS

I am implementing restore in app purchase. I have a button whose action is

@IBAction func restorePurchases(send : AnyObject){

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

My question is.

  1. Is this the right way to restore?
  2. How can we verify success action for restoring purchases?
like image 866
Saqib Omer Avatar asked Feb 26 '15 05:02

Saqib Omer


Video Answer


1 Answers

don't forget to check if you can make a payment:

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

for check if the restore was good you have to follow the protocol: SKPaymentTransactionObserver and then implement the method:

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

and subscribe to the event by doing:

SKPaymentQueue.default().add(self)

Finally here is an exemple of how I check the result:

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
    }
  }
}
like image 180
Florian Avatar answered Oct 10 '22 03:10

Florian