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 час
Другие вопросы по тегам