2

在我的 AppDelegate 中,我运行以下命令:

SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);

当我运行“购买恢复”并立即终止应用程序时,在重新启动后用户界面卡住了处理所有购买所需的时间(我测试了其中的许多,每次我都用苹果验证收据- 卡住 UI 大约需要一分钟!!)

我认为可能是事务队列启动被阻塞..所以我将代码更改为:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
            SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
});

它没有帮助....

到目前为止 - 我开始怀疑队列在我的主线程上运行......这对我来说没有意义......

我调试了 - 并且......支付处理正在“队列:com.apple.main-thread(串行)”上运行。我假设这也是用户 GUI 线程(否则 GUI 没有理由卡住......)。

所以...

我能做些什么??有什么解决方案我可以处理收据并做出响应......?

谢谢!

4

1 回答 1

2

我联系了 Apple,试图打开一个关于这个问题的错误报告。

他们说,一般来说,这是预期的行为(是的!我的 GUI 应该在处理付款时卡住)。

如果这也困扰您,http://bugreport.apple.com是打开有关此问题的服务请求的网站。

我认为这是一个有缺陷的设计,这是一个错误,Apple 认为这是可以接受的。

于 2016-08-22T23:00:51.113 回答