Я использую среду StoreKit для реализации автоматически обновляемых подписок.Моя реализация работает, но у меня есть проблема с paymentQueue.Когда я добавляю SKPaymentTransactionObserver в эту очередь, он запускает ту же функцию делегата, что и при добавлении SKPayment.Этого можно избежать?
Метод делегата paymentQueue, который запускается при выполнении любого из следующих действий:
SKPaymentQueue.default().add(SKPaymentTransactionObserver)
SKPaymentQueue.default().add(SKPayment)
МЕТОД ДЕЛЕГАТА
// Observe transaction updates.
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions{
//print("rawValue: \(transaction.transactionState.rawValue)")
switch transaction.transactionState.rawValue{
case 0:
// DO NOT 'finishTransaction'
return print("paymentQueue.purchasing")
case 1:
queue.finishTransaction(transaction)
self.registerPurchaseSuccess()
return print("paymentQueue.PURCHASE SUCCESS")
case 2:
if let error = transaction.error{
queue.finishTransaction(transaction)
return print("paymentQueue.FAIL.error: \(error.localizedDescription)")
}else{
queue.finishTransaction(transaction)
return print("paymentQueue.fail. no errors")
}
case 3:
queue.finishTransaction(transaction)
return print("paymentQueue.pending.restored purchases")
case 4:
queue.finishTransaction(transaction)
return print("paymentQueue.pending")
default:
return print("paymentQueue.unresolved issue ...")
}
}
}
После успешного добавления моегоSKPaymentTransactionObserver к SKPaymentQueue, в итоге я запускаю функцию self.registerPurchaseSuccess (), которая бессмысленна, поскольку я не совершал никаких платежных транзакций, просто добавил наблюдателя в SKPaymentQueue