自動更新サブスクリプションを実装しようとしています。問題はSKPaymentQueue
がSKPaymentQueue.defaultQueue().finishTransaction(transaction)
に電話してSKPaymentTransaction
を終了できないことです。以上のようにSKPaymentQueueは、自動更新可能なサブスクリプション製品のSKPaymentTransactionを完了しません。
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)
が取引を終了しないケースがありますか?
こんにちは@Mikeあなたはこれまでにこの質問の一番下に入りましたか? – WickedW