[ad_1]
Code:
extension IAPManager: SKPaymentTransactionObserver {
//This delegate will set off for each transactions, both for buying or restoring
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
transactions.forEach { (transaction) in
change transaction.transactionState {
case .bought:
onBuyProductHandler?(.success(true))
SKPaymentQueue.default().finishTransaction(transaction)
case .restored:
totalRestoredPurchases += 1
let prodID = transaction.fee.productIdentifier
print("restored productID (prodID)")
SKPaymentQueue.default().finishTransaction(transaction)
case .failed:
if let error = transaction.error as? SKError {
if error.code != .paymentCancelled {
onBuyProductHandler?(.failure(error))
} else {
onBuyProductHandler?(.failure(IAPManagerError.paymentWasCancelled))
}
onBuyProductHandler?(.failure(error))
//print("IAP Error:", error.localizedDescription)
}
SKPaymentQueue.default().finishTransaction(transaction)
case .deferred, .buying: break
@unknown default: break
}
}
}
func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
if totalRestoredPurchases != 0 {
onBuyProductHandler?(.success(true))
} else {
print("IAP: No purchases to revive!")
onBuyProductHandler?(.success(false))
}
}
I’ve two questions:
-
Ought to I name
SKPaymentQueue.default().finishTransaction(transaction)insidepaymentQueueRestoreCompletedTransactionsFinisheddelegate as nicely apart from calling it onupdatedTransactionsdelegate to shut the fee queue? -
When a am Restoring a product, how am I suppose to make use of
transactionobject to confirm receipt in an effort to get every merchandise Buy date & Expiration date?
PS: I’m engaged on Auto Renewable subscription.
[ad_2]
