在后台线程上强制 SKPaymentQueue 运行
Forcing SKPaymentQueue to run on a background thread
在我的 AppDelegate 中,我 运行 这个命令:
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
当我 运行 "purchase recovery" 并立即终止应用程序时,在重新启动它后,用户界面在处理所有购买所需的时间段内卡住(我测试了很多他们,对于每一个我都用苹果验证收据 - 卡住大约需要一分钟 UI!!)
我认为可能是事务队列启动阻塞了..所以我将代码更改为:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
});
并没有帮助....
现在 - 我开始怀疑我的主线程上的队列 运行s...这对我来说没有意义...
我调试了 - 并且...支付处理在 "Queue: com.apple.main-thread (serial)" 上进行 运行ning。我假设这也是用户 GUI 线程(否则没有理由让 GUI 卡住...)。
所以...
我能做什么??
有什么解决方案可以让我处理收据并做出响应...?
谢谢!
我联系了 Apple,试图打开一个关于这个问题的错误报告。
他们说,一般来说,这是预期的行为(是的!我的 GUI 应该在处理付款时被卡住)。
如果这也让您感到困扰,http://bugreport.apple.com 是针对此问题打开服务请求的网站。
我认为这是一个有缺陷的设计,它是一个错误,Apple 认为它是可以接受的。
在我的 AppDelegate 中,我 运行 这个命令:
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
当我 运行 "purchase recovery" 并立即终止应用程序时,在重新启动它后,用户界面在处理所有购买所需的时间段内卡住(我测试了很多他们,对于每一个我都用苹果验证收据 - 卡住大约需要一分钟 UI!!)
我认为可能是事务队列启动阻塞了..所以我将代码更改为:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
});
并没有帮助....
现在 - 我开始怀疑我的主线程上的队列 运行s...这对我来说没有意义...
我调试了 - 并且...支付处理在 "Queue: com.apple.main-thread (serial)" 上进行 运行ning。我假设这也是用户 GUI 线程(否则没有理由让 GUI 卡住...)。
所以...
我能做什么?? 有什么解决方案可以让我处理收据并做出响应...?
谢谢!
我联系了 Apple,试图打开一个关于这个问题的错误报告。
他们说,一般来说,这是预期的行为(是的!我的 GUI 应该在处理付款时被卡住)。
如果这也让您感到困扰,http://bugreport.apple.com 是针对此问题打开服务请求的网站。
我认为这是一个有缺陷的设计,它是一个错误,Apple 认为它是可以接受的。