我正在尝试实施自动续订订阅产品.问题是SKPaymentQueue无法通过调用SKPaymentQueue.defaultQueue().finishTransaction(transaction)来完成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(事务).通常情况下,交易已完成,不再停留.
但是,当我再次运行该应用程序时,该交易仍未完成.顺便说一句,我在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(交易)没有完成交易的情况?
解决方法
您是否有可能再次看到相同的交易,而是从iTunes沙箱中获得新的自动续订交易?
在iTunes沙箱中测试自动续订订阅时,他们会人为地加快续订速度.这会导致每隔几分钟就会出现一个新事务.
从Testing Your App and In-App Purchase Products开始:
When testing auto-renewable subscriptions in the test environment,keep in mind that the duration times are compressed. Additionally,test subscriptions only auto-renew a maximum of six times.
- 1 week : 3 minutes
- 1 month : 5 minutes
- 2 months : 10 minutes
- 3 months : 15 minutes
- 6 months : 30 minutes
- 1 year : 1 hour
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。