强制SKPaymentQueue在后台线程上运行

时间:2016-08-14 17:28:32

标签: swift in-app-purchase skpaymenttransaction

在我的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(serial)"上运行。我假设这也是用户GUI线程(否则GUI没有理由被卡住......)。

... SO

我该怎么办? 有没有解决方案我可以处理收据并做出回应......?

谢谢!

1 个答案:

答案 0 :(得分:1)

我联系了Apple,尝试打开有关此问题的错误报告。

他们说,一般来说,这是预期的行为(是的!我的图表在处理付款时会受到阻碍)。

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

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