Я пытаюсь отобразить предупреждение для пользователя, когда покупки восстановлены.Но когда я отлаживаю и распечатываю количество восстановленных покупок, я получаю 0 транзакций, которые были восстановлены.Я не понимаю, почему это вернуло 0. Я думал, что мне нужно только вызвать метод restoreCompletedTransactions()
.Я публикую уведомление, чтобы уведомить меня, если восстановление завершено, и я даже не дошел до этой точки.Я использую paymentQueueRestoreCompletedTransactionsFinished(_ pQueue: SKPaymentQueue)
, чтобы уведомить меня о завершении восстановления.Как я могу правильно восстановить покупки.
let paymentQueue = SKPaymentQueue.default()
func restorePurchases() {
if !self.canMakePurchases {
return
}
self.paymentQueue.add(self)
self.paymentQueue.restoreCompletedTransactions()
}
func paymentQueue(_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error) {
print("Restore failed")
}
func paymentQueue(_ pQueue: SKPaymentQueue, updatedTransactions pTransactions: [SKPaymentTransaction]) {
for scanTransaction in pTransactions {
switch scanTransaction.transactionState {
case .purchasing:
break
case .purchased:
NotificationCenter.default.post(name: .AppDelegateUserHasPurchasedProductNotification, object: self)
pQueue.finishTransaction(scanTransaction)
default:
pQueue.finishTransaction(scanTransaction)
}
}
}
func paymentQueueRestoreCompletedTransactionsFinished(_ pQueue: SKPaymentQueue) {
print("Received restored transactions: \(pQueue.transactions.count)")
for scanTansaction in pQueue.transactions {
switch scanTansaction.transactionState {
case .restored:
NotificationCenter.default.post(name: .AppDelegateUserHasRestoredPurchasesNotification, object: self)
pQueue.finishTransaction(scanTansaction)
default:
break
}
}
}
Бревна
Received restored transactions: 0