在appdelegate中,我运行以下命令:
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
当我运行“Purchase Recovery”并立即终止该应用程序时,重启后,用户界面将在处理所有购买所需的时间段内卡住(我测试了其中的许多项,每次我都用苹果验证收据-大约需要一分钟的卡住用户界面!!)
我想可能是事务队列启动被阻塞了。所以我把代码改为:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
SKPaymentQueue.defaultQueue().addTransactionObserver(self.storeDel);
});
也没用……
现在-我开始怀疑队列在我的主线程上运行…这对我来说没有意义…
我调试过-而且…付款处理正在“queue:com.apple.main-thread(serial)”上运行。我假设这也是用户gui线程(否则没有理由让gui卡住…)。
所以…
我能做什么??
有什么解决方案我可以处理收据并作出回应…?
谢谢!
最佳答案
我联系了苹果,试图打开一个关于这个问题的错误报告。
他们说,一般来说,这是预期的行为(是的!!我的图形用户界面在处理付款时被卡住了)。
如果这也使您感到不适,http://bugreport.apple.com是打开有关此问题的服务请求的网站。
我认为这是一个有缺陷的设计,这是一个缺陷,苹果认为这是可以接受的。
关于swift - 强制SKPaymentQueue在后台线程上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38944749/