SKPaymentQueue не завершает SKPaymentTransaction для продукта с автоматическим продлением подписки
Я пытаюсь реализовать Автообновляемый продукт подписки. Проблема в том, что SKPaymentQueue
не может закончить SKPaymentTransaction
позвонив SKPaymentQueue.defaultQueue().finishTransaction(transaction)
,
func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
if let transactions = transactions as? [SKPaymentTransaction] {
for transaction in transactions {
switch transaction.transactionState {
case .Purchasing:
break
case .Purchased:
queue.finishTransaction(transaction) // finish transaction
self.purchasedWithTranasction(transaction)
case .Failed:
queue.finishTransaction(transaction) // finish transaction
self.failedWithTransaction(transaction)
case .Restored:
queue.finishTransaction(transaction) // finish transaction
self.restoredWithTransaction(transaction)
case .Deferred:
queue.finishTransaction(transaction) // finish transaction
}
}
}
}
Как указано выше, в paymentQueue:updatedTransactions:
метод, queue.finishTransaction(transaction)
называются. Как правило, транзакции завершены и больше не останутся.
Но когда я снова запускаю приложение, эти транзакции остаются незавершенными. Кстати, я установил наблюдателя транзакции в AppDelegate, как показано ниже. Итак, когда приложение запущено, остальные транзакции начинают обрабатываться путем вызова paymentQueue:updatedTransactions:
, Это не похоже на мои ожидания.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// add transaction observer
SKPaymentQueue.defaultQueue().addTransactionObserver(CargoBay.sharedManager())
....
return true
}
Ребята, у вас есть идеи по поводу этой проблемы? Есть ли такой случай SKPaymentQueue.defaultQueue().finishTransaction(transaction)
не завершает транзакцию?
1 ответ
Возможно ли, что вы снова не видите ту же транзакцию, а новую транзакцию автоматического продления из песочницы iTunes?
При тестировании автообновлений подписок в песочнице iTunes они искусственно ускоряют скорость продлений. Это приводит к появлению новой транзакции каждые несколько минут.
От тестирования вашего приложения и покупок в приложении:
При тестировании автоматически обновляемых подписок в тестовой среде имейте в виду, что длительность сокращается. Кроме того, тестовые подписки могут обновляться только шесть раз.
- 1 неделя: 3 минуты
- 1 месяц: 5 минут
- 2 месяца: 10 минут
- 3 месяца: 15 минут
- 6 месяцев: 30 минут
- 1 год: 1 час